teilstrings kopieren,wurzel ziehen und arrays <- gelöst
-
- Beiträge: 91
- Registriert: Sa 6. Feb 2010, 15:58
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
teilstrings kopieren,wurzel ziehen und arrays <- gelöst
Hi
also ich habe eine Variable die z.B das hier enthält:
123456 1234455
joa und da möchte ich eben die beiden werte in 2 andere Variabeln reinkopieren...
ach ja wenn ihr hier ein quelltext reinkopiert, erklärt den bitte mal auch
sonst kapier ich gar nichts...
also ich habe eine Variable die z.B das hier enthält:
123456 1234455
joa und da möchte ich eben die beiden werte in 2 andere Variabeln reinkopieren...
ach ja wenn ihr hier ein quelltext reinkopiert, erklärt den bitte mal auch
sonst kapier ich gar nichts...
Zuletzt geändert von Stephanie H. am Do 13. Mai 2010, 18:35, insgesamt 6-mal geändert.
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: HILFE
Das hatten wir doch schon mal.... Hier mal einige Schritte:
01) Variable Str1 und Str2 Local in eine der Procedure anlegen
02) Anschließend mit Copy und Pos Arbeiten z.b.
Es kann sein das ich mich bei Length verschrieben habe(einfach len eingeben und STRG+Leertaste drücken)
Was fällt dir hier bei genaueren Betrachten auf ? Einmal gehe ich bei Copy von 1 bis Pos aus und in der zweiten Zeile von Pos bis Len.
Strings Fangen immer bei 1 an. Die Paramenter sind bei Copy In etwa: Copy(Text, Index, Count);
Text:= Dein String(In diesen Fall deine Zahlen);
Index:=In Mein beispiel ermittele ich mit Pos die Position vom ersten Leerzeichen
Count:=In meinem Beispiel ist das die gesamntelänge von deinem String. Also wieder von deinen Zahlen.
Das Beispiel, kann noch Optimiert werden. In dem du nur einmal Pos aufrufst und den Wert in eine Interger Variable Packst. Außerdem solltest du noch Prüfen, ob überhaupt ein Leerzeichen vorhanden ist, sonst könntest du einen Laufzeitfehler bekommen, oder was ähnliches.
Das ist die einfachste Form.... ich habe es absichtlich nicht so einfach gemacht, z.b. kannst du das Beispiel nicht Kopieren, sondern musst es für deinen Zweck Anpassen. Vielleicht hilft das weiter, als ein Komplett Fertiges Beispiel....(Was in vielen Foren, Kritisiert wird).
Edit01:
PS: Bitte ändere dein Titel. Ein bessere Titel wäre in diesen Fall z.b.: Tokenziehen, oder Zeichenketten Aufteilen, aber nicht HILFE.....
01) Variable Str1 und Str2 Local in eine der Procedure anlegen
02) Anschließend mit Copy und Pos Arbeiten z.b.
Code: Alles auswählen
str1:=Copy(meinStr,1, Pos(' ', str);
str2:=Copy(meinStr,Pos(' ', str),Lenght(meinStr));
Was fällt dir hier bei genaueren Betrachten auf ? Einmal gehe ich bei Copy von 1 bis Pos aus und in der zweiten Zeile von Pos bis Len.
Strings Fangen immer bei 1 an. Die Paramenter sind bei Copy In etwa: Copy(Text, Index, Count);
Text:= Dein String(In diesen Fall deine Zahlen);
Index:=In Mein beispiel ermittele ich mit Pos die Position vom ersten Leerzeichen
Count:=In meinem Beispiel ist das die gesamntelänge von deinem String. Also wieder von deinen Zahlen.
Das Beispiel, kann noch Optimiert werden. In dem du nur einmal Pos aufrufst und den Wert in eine Interger Variable Packst. Außerdem solltest du noch Prüfen, ob überhaupt ein Leerzeichen vorhanden ist, sonst könntest du einen Laufzeitfehler bekommen, oder was ähnliches.
Das ist die einfachste Form.... ich habe es absichtlich nicht so einfach gemacht, z.b. kannst du das Beispiel nicht Kopieren, sondern musst es für deinen Zweck Anpassen. Vielleicht hilft das weiter, als ein Komplett Fertiges Beispiel....(Was in vielen Foren, Kritisiert wird).
Edit01:
PS: Bitte ändere dein Titel. Ein bessere Titel wäre in diesen Fall z.b.: Tokenziehen, oder Zeichenketten Aufteilen, aber nicht HILFE.....
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 91
- Registriert: Sa 6. Feb 2010, 15:58
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: HILFE
danke
aber irgenwie geht das bei mir nicht so
also das ist mein code:
X1:=Copy(name,1, Pos(' ', str));
Y1:=Copy(name,Pos(' ', str),Length(name));
und das steht da als Fehler:
project.lpr(49,46) Fatal: Syntax error, "(" expected but ")" found
was meinst du da eigentlich mit str?
aber irgenwie geht das bei mir nicht so
also das ist mein code:
X1:=Copy(name,1, Pos(' ', str));
Y1:=Copy(name,Pos(' ', str),Length(name));
und das steht da als Fehler:
project.lpr(49,46) Fatal: Syntax error, "(" expected but ")" found
was meinst du da eigentlich mit str?
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: HILFE
str ist enthält dein Text. Es ist ein vom Typ String. Also enthält deine Zahlen. In deinem Fall muss es mit name ersetzt werden. Daher auch die Fehler Meldung, vermute ich: str ist auch eine Funktion.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 91
- Registriert: Sa 6. Feb 2010, 15:58
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: HILFE
ok aber jetzt zeigt er das hier an:
project.lpr(49,21) Error: Incompatible types: got "ShortString" expected "LongInt"
project.lpr(50,21) Error: Incompatible types: got "ShortString" expected "LongInt"
project.lpr(49,21) Error: Incompatible types: got "ShortString" expected "LongInt"
project.lpr(50,21) Error: Incompatible types: got "ShortString" expected "LongInt"
-
- Beiträge: 7
- Registriert: Mi 28. Apr 2010, 08:40
Re: HILFE
Hast du alle Variablen als String definiert?
-
- Beiträge: 91
- Registriert: Sa 6. Feb 2010, 15:58
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: HILFE
soll ich die nicht als integer definieren weil das zahlen sind?
-
- Beiträge: 7
- Registriert: Mi 28. Apr 2010, 08:40
Re: HILFE
Doch dann musst du den String aber noch vorher in Zahlen umwandeln. Weil es könnte ja auch ein Text im String stehen.
Damit sollte es nun funktionieren.
Code: Alles auswählen
X1 := StrToInt(Copy(name,1, Pos(' ', str)));
Y1 := StrToInt(Copy(name,Pos(' ', str),Length(name)));
-
- Beiträge: 91
- Registriert: Sa 6. Feb 2010, 15:58
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: HILFE
also mit string funktioniert das
aber dann bekomm ich mehr probleme wenn ich mit den zahlen rechnen will!!!
aber dann bekomm ich mehr probleme wenn ich mit den zahlen rechnen will!!!
-
- Beiträge: 7
- Registriert: Mi 28. Apr 2010, 08:40
Re: HILFE
Mhh also in dem Beispiel oben hast du dann Integer Werte am Schluss.
Vielleicht kannst mal grad den kompletten Code zeigen den du immoment vorliegen hast.
Vielleicht kannst mal grad den kompletten Code zeigen den du immoment vorliegen hast.
-
- Beiträge: 512
- Registriert: Mo 25. Aug 2008, 18:17
- OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
- CPU-Target: x86
- Wohnort: Chemnitz
Re: HILFE
Ist es explizit nicht.pluto hat geschrieben:Ich bin mir nicht ganz sicher, ob es notwendig ist noch ein -1 bei Length hinten dran zu hängen.
-
- Beiträge: 91
- Registriert: Sa 6. Feb 2010, 15:58
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: HILFE
also das hier ist mein quellcode:
X:= StrToInt(Copy(name,1, Pos(' ', name)));
Y:= StrToInt(Copy(name,Pos(' ', name),Length(name)));
und das zeigt er als fehlermeldung an:
project.lpr(46,32) Error: Identifier not found "StrToInt"
X:= StrToInt(Copy(name,1, Pos(' ', name)));
Y:= StrToInt(Copy(name,Pos(' ', name),Length(name)));
und das zeigt er als fehlermeldung an:
project.lpr(46,32) Error: Identifier not found "StrToInt"