BASIC Befehle MID und STRING
-
- Beiträge: 198
- Registriert: 09.12.2004 22:09
BASIC Befehle MID und STRING
Hallo,
beim Hantieren mit Strings mußte ich feststellen, des es in PB den STRING-Befehl nicht gibt. Außerdem Gibt es nur eine MID-Funktion, jedoch keinen MID-Befehl. Hat da jemand eine einfache Lösung ?
Danke und Gruß
beim Hantieren mit Strings mußte ich feststellen, des es in PB den STRING-Befehl nicht gibt. Außerdem Gibt es nur eine MID-Funktion, jedoch keinen MID-Befehl. Hat da jemand eine einfache Lösung ?
Danke und Gruß
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
Jetzt bin ich mal gespannt wie sich die MID-Funktion von dem MID-Befehl unterscheidet...
Windows 10 Pro, 64-Bit / Outtakes | Derek
-
- Beiträge: 198
- Registriert: 09.12.2004 22:09
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
Abgefahrene Syntax!
Der MID-Befehl hat mit dem eigentlichem BASIC-MID nix zu tun sondern ist lediglich das Suchen/Ersetzen in Strings mit Start- / Längenangabe.
Was den STRING Befehl angeht:
Der MID-Befehl hat mit dem eigentlichem BASIC-MID nix zu tun sondern ist lediglich das Suchen/Ersetzen in Strings mit Start- / Längenangabe.
Was den STRING Befehl angeht:
Code: Alles auswählen
Procedure.s STRING(Char.s,Count)
Protected Result.s
lpBuffer = AllocateMemory(Count)
RtlFillMemory_(lpBuffer,Count,Asc(Char))
Result = PeekS(lpBuffer)
FreeMemory(lpBuffer)
ProcedureReturn Result.s
EndProcedure
Windows 10 Pro, 64-Bit / Outtakes | Derek
-
- Beiträge: 198
- Registriert: 09.12.2004 22:09
Danke für den STRING-Tip.
Zur MID-Anweisung sagt die MSDN Folgendes:
http://msdn2.microsoft.com/de-de/librar ... S.80).aspx
Zur MID-Anweisung sagt die MSDN Folgendes:
http://msdn2.microsoft.com/de-de/librar ... S.80).aspx
Mid-Anweisung
Ersetzt eine bestimmte Anzahl an Zeichen in einer String-Variablen durch Zeichen aus einer anderen Zeichenfolge.
Mid( _
ByRef Target As String, _
ByVal Start As Integer, _
Optional ByVal Length As Integer _
) = StringExpression
BestandteileBestandteile
Target
Erforderlich. Name der zu ändernden String-Variablen.
Start
Erforderlich. Integer-Ausdruck. Zeichenposition in Target, wo die Ersetzung des Texts beginnt. Start verwendet einen mit Eins beginnenden Index.
Length
Optional. Integer-Ausdruck. Anzahl der zu ersetzenden Zeichen. Wird hierfür kein Wert angegeben, so wird String komplett verwendet.
StringExpression
Erforderlich. String-Ausdruck, der einen Teil von Target ersetzt.
Code: Alles auswählen
Macro String(char, count)
RSet("", count, char)
EndMacro
- hjbremer
- Beiträge: 822
- Registriert: 27.02.2006 22:30
- Computerausstattung: von gestern
- Wohnort: Neumünster
Code: Alles auswählen
Procedure MidString(*ori, start, *neu, lg=0)
If lg = 0
lg = MemoryStringLength(*neu)
EndIf
MoveMemory(*neu, *ori+start-1, lg)
;in dieser Version kann Ori länger werden, wenn lg nicht angegeben oder zu groß ist
EndProcedure
Procedure MidString1(*ori, start, *neu, lg=0)
lgori = MemoryStringLength(*ori)
lgneu = MemoryStringLength(*neu)
If lgneu + start > lgori
lgneu = lgori - start + 1
EndIf
If lg = 0 Or lg > lgneu
lg = lgneu
EndIf
MoveMemory(*neu, *ori+start-1, lg)
;in dieser Version sollte Ori NICHT länger werden
EndProcedure
tmp$="grüne Hose"
MidString(@tmp$,3,@"au"): Debug tmp$
tmp$="grüne Hose"
MidString(@tmp$,3,@"au",2): Debug tmp$
tmp$="grüne Hose"
MidString1(@tmp$,3,@"au",18): Debug tmp$
tmp$="grüne Hose"
MidString1(@tmp$,3,@"au123456789123456789",18): Debug tmp$
Wer will kann MoveMemory auch durch CopyMemory ersetzen.
Purebasic 5.70 x86 5.72 X 64 - Windows 10
Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer