teilstrings kopieren,wurzel ziehen und arrays <- gelöst

Für Fragen von Einsteigern und Programmieranfängern...
Stephanie H.
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

Beitrag von Stephanie H. »

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...
Zuletzt geändert von Stephanie H. am Do 13. Mai 2010, 18:35, insgesamt 6-mal geändert.

Hitman
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

Beitrag von Hitman »

Die Lösung dafür kannst du dir selbst überlegen - alles was du brauchst sind die Funktionen Pos und Copy.

pluto
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

Beitrag von pluto »

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.

Code: Alles auswählen

str1:=Copy(meinStr,1, Pos(' ', str);
str2:=Copy(meinStr,Pos(' ', str),Lenght(meinStr));
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.....
MFG
Michael Springwald

Stephanie H.
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

Beitrag von Stephanie H. »

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?

pluto
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

Beitrag von pluto »

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

Stephanie H.
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

Beitrag von Stephanie H. »

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"

elektrischeliebe
Beiträge: 7
Registriert: Mi 28. Apr 2010, 08:40

Re: HILFE

Beitrag von elektrischeliebe »

Hast du alle Variablen als String definiert?

Stephanie H.
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

Beitrag von Stephanie H. »

soll ich die nicht als integer definieren weil das zahlen sind?

elektrischeliebe
Beiträge: 7
Registriert: Mi 28. Apr 2010, 08:40

Re: HILFE

Beitrag von elektrischeliebe »

Doch dann musst du den String aber noch vorher in Zahlen umwandeln. Weil es könnte ja auch ein Text im String stehen.

Code: Alles auswählen

X1 := StrToInt(Copy(name,1, Pos(' ', str)));
Y1 := StrToInt(Copy(name,Pos(' ', str),Length(name)));
Damit sollte es nun funktionieren.

pluto
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

Beitrag von pluto »

Ich bin mir nicht ganz sicher, ob es notwendig ist noch ein -1 bei Length hinten dran zu hängen.
MFG
Michael Springwald

Stephanie H.
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

Beitrag von Stephanie H. »

also mit string funktioniert das
aber dann bekomm ich mehr probleme wenn ich mit den zahlen rechnen will!!!

elektrischeliebe
Beiträge: 7
Registriert: Mi 28. Apr 2010, 08:40

Re: HILFE

Beitrag von elektrischeliebe »

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.

Hitman
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

Beitrag von Hitman »

pluto hat geschrieben:Ich bin mir nicht ganz sicher, ob es notwendig ist noch ein -1 bei Length hinten dran zu hängen.
Ist es explizit nicht.

Stephanie H.
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

Beitrag von Stephanie H. »

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"

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Re: HILFE

Beitrag von Targion »

Vielleicht solltest du deinem Thread mal einen anständigen Titel geben...

Zu deiner Frage: Du musst die Unit "SysUtils" einbinden, damit StrToInt verfügbar ist.

Antworten