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
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) 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