mid -Funktion/-Anweisung missverstanden ?

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
sven-my
*****
Beiträge: 358
Registriert: Fr, 14.12.2007 19:56

mid -Funktion/-Anweisung missverstanden ?

Beitrag von sven-my »

Hallo Experten,

in der Hilfe der AOO3.4 zu Basic/Runtime -> mid- Funktion/Anweisung steht:
Mid-Funktion, Mid-Anweisung [Laufzeit]
Gibt den angegebenen Teil eines Zeichenkettenausdrucks zurück (Mid-Funktion) oder ersetzt ihn durch eine andere Zeichenkette (Mid-Anweisung).
Syntax:
Mid (Text As String, Anfang As Integer [, Laenge As Integer]) oder Mid (Text As String, Anfang As Integer , Laenge As Integer, Text As String)
Rückgabewert:
String (only by Function)
Parameter:
Text: Ein beliebiger Zeichenkettenausdruck, den Sie bearbeiten möchten.
Anfang: Integer-Ausdruck, der die Zeichenposition in der Zeichenkette angibt, an welcher der zu ersetzende oder zurückzugebende Zeichenkettenabschnitt anfängt.
Laenge: Integer-Ausdruck, der die Anzahl der Zeichen angibt, die Sie ersetzen oder zurückgeben möchten.
Entfällt bei der Mid-Funktion die Angabe zu length, werden alle Zeichen ab der angegebenen Position bis zum letzten Zeichen der Zeichenfolge ermittelt.
Ist der Längenparameter der Mid-Anweisung kleiner als die Länge des zu ersetzenden Textes, so wird der Text auf die angegebene Länge gekürzt.
Text: Die Zeichenkette, durch die der Zeichenkettenabschnitt ersetzt werden soll (Mid-Anweisung).

So funktioniert es nicht (abgewandeltes Beispiel aus der Hilfe):

Code: Alles auswählen

Sub main
Dim sInput As String
Dim sGe_date As String
sInput = "06-28-2012"
ersatz = "99"
sGe_date = mid(sInput, 4, 2,ersatz)
MsgBox sGe_date
End Sub
Was habe ich in der Hilfe falsch verstanden, wenn ich dies zurück haben möchte: "06-99-2012", es kommt aber nur ein leerer String zurück ?
Verstanden habe ich, daß das Ersetzen eine Anweisung ist, und es bei einer Anweisung keinen String zurück gibt, wie bekomme ich also den geänderten String ?

gruß
sven-my
win7 prof / AOO 4.1.2 & AOO 3.4.0 portable
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: mid -Funktion/-Anweisung missverstanden ?

Beitrag von komma4 »

oder ersetzt ihn durch eine andere Zeichenkette (Mid-Anweisung)
Du nutzt die Anweisung, lasse Dir sInput nach dem Aufruf anzeigen - dort ist die Zeichenkette ersetzt.


Das hilft Dir weiter?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
sven-my
*****
Beiträge: 358
Registriert: Fr, 14.12.2007 19:56

Re: mid -Funktion/-Anweisung missverstanden ?

Beitrag von sven-my »

Herzlichen Dank Winfried !

Auf diesen Trichter wäre ich nie gekommen, obwohl im Nachhinein logisch.

gruß
sven-my
win7 prof / AOO 4.1.2 & AOO 3.4.0 portable
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: mid -Funktion/-Anweisung missverstanden ?

Beitrag von Karolus »

Hallo
sven-my hat geschrieben: Auf diesen Trichter wäre ich nie gekommen, obwohl im Nachhinein logisch.
Nein, logisch ist das nicht - das ist sehr merkwürdig daß eine Funktion ein Argument verändert aber nichts zurückgibt.

Karo
LO25.2… debian 13( trixie ) auf Raspberry5 8GB (ARM64)
LO25.8… flatpak debian 13( trixie ) auf Raspberry5 8GB (ARM64)
Benutzeravatar
sven-my
*****
Beiträge: 358
Registriert: Fr, 14.12.2007 19:56

Re: mid -Funktion/-Anweisung missverstanden ?

Beitrag von sven-my »

Hallo Karolus,

- es ist eben KEINE Funktion, sondern eine Anweisung.

Es steht in der Hilfe:
Mid-Funktion, Mid-Anweisung [Laufzeit]
Gibt den angegebenen Teil eines Zeichenkettenausdrucks zurück (Mid-Funktion) oder ersetzt ihn durch eine andere Zeichenkette (Mid-Anweisung).
Left und right sind beides Funktionen, aber keine Anweisungen, deren Kombinationen ich bisher als mid-Ersatz genommen habe; daher auch das Mißverstehen der Hilfe.

so funktionierts, wie ich das Ergebnis haben wollte:

Code: Alles auswählen

Sub main()
Dim sInput As String
Dim sGe_date As String
sInput = "06-28-2012"
ersatz ="12"
mid(sInput, 4, 2,ersatz)
msgbox sInput
End Sub
gruß
sven-my
win7 prof / AOO 4.1.2 & AOO 3.4.0 portable
Antworten