Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   String auseinander nehmen (https://www.delphipraxis.net/41720-string-auseinander-nehmen.html)

kingflo 7. Mär 2005 15:54


String auseinander nehmen
 
Hallo!
Vielleicht könnt ihr mir helfen.

Also ich habe ein String mit dem Namen Text.

Dieser Text ist bei der Rückgabe immer unterschiedlich lang. Aber am ende des Strings steht immer eine Zahl z.b 1 oder 12 oder eine andere.

So und diese Zahl möchte ich jetzt in der integer variable wert haben.

Weiß aber nicht wie ich das machen soll, da ich nie weiß wie groß der String ist und wie viele Stellen die Zahl hat.

Kann mir da jemand helfen?

bttb930 7. Mär 2005 16:06

Re: String auseinander nehmen
 
die länge des strings bekommst du mit Length(s) und das n-te Zeichen mit Copy(s, n, 1)

siehe auch online-Hilfe

mit StrToInt(Copy(s, n, 1)) machst du aus der ziffer an der n-ten stelle im string s eine zahl

sniper_w 7. Mär 2005 16:27

Re: String auseinander nehmen
 
Oder auch so:
Delphi-Quellcode:
var str : string = '12345';
    i:integer;
begin
 i:= StrToInt(str[2]); // i := 2;
end;

SubData 7. Mär 2005 16:30

Re: String auseinander nehmen
 
Zitat:

Zitat von sniper_w
Oder auch so:
Delphi-Quellcode:
var str : string = '12345';
    i:integer;
begin
 i:= StrToInt(str[2]); // i := 2;
end;

Wäre das in dem Fall nich i := 3?

sniper_w 7. Mär 2005 16:38

Re: String auseinander nehmen
 
Nein.
Strings beginnen mit index 1. Sind halt nicht 0 "based".

Nikolas 7. Mär 2005 16:42

Re: String auseinander nehmen
 
Für beliebig lange Zahlen am Stringende:
Delphi-Quellcode:
i:= length(str)-1;

// String wird von hinten durchgegangen und geschaut, wann die erste nicht-Zahl auftaucht.
while str[i] in ['0'..'9'] do
dec(i);

result:= strtoint(copy(str,i,length(str)-i));
Das ist eher als Idee als als fertiger Code gedacht, aber (+/-) 1 müsste er funktionieren.

MarcusB 7. Mär 2005 16:46

Re: String auseinander nehmen
 
Wenn Du nicht weisst, wielang der String ist und wieviele Stellen die Zahl hat, dann könnte ein regulärer Ausruck eine gute Lösung sein.

Für Deinen Fall etwa :

Code:
/^.*(\d*)$/
Allerdings setzt das voraus, das Du eine entsprechende Library installiert hast, wie z.B. TRegExpr.

:hi:

kingflo 7. Mär 2005 17:36

Re: String auseinander nehmen
 
Also irgendwie hab ichs noch nicht richtig hinbekommen.


Habs bis jetzt so:
Und es geht halt nur bei einem einstelligem wert am Ende logisch ist halt fest gesetzt.



Code:
str:=PHPOutPut.Items.Strings[PHPOutPut.Itemindex];

i:= StrToInt(str[length(str)]);
kann man nicht rausbekommen, was bei einem String nach dem Wort Line: für Zahlen kommen?
Denn das Letzte Wort vor den Zahlen ist Line: (bzw wenn es nicht line ist soll die aktion gar nicht durchgeführt werden)

Nikolas 7. Mär 2005 17:39

Re: String auseinander nehmen
 
Wenn du die Buchstaben vor der Zahl kennst, kannst du auch mit pos arbeiten.
per int:=pos(str,'line'); kommst du an die Position von line im String. Danach kannst du per copy die Buchstaben rausholen.

Binärbaum 7. Mär 2005 17:42

Re: String auseinander nehmen
 
Zitat:

Zitat von kingflo
kann man nicht rausbekommen, was bei einem String nach dem Wort Line: für Zahlen kommen?
Denn das Letzte Wort vor den Zahlen ist Line: (bzw wenn es nicht line ist soll die aktion gar nicht durchgeführt werden)

Nimm doch Delphi-Referenz durchsuchenpos:
Delphi-Quellcode:
var myStr: string;
...
p:= pos('line:', myStr);
if p >0 then begin
  ShowMessage('"line:" ist in myStr enthalten');
  //mach irgendwas
end
else //'line:' ist nicht im myStr vorhanden
MfG
Binärbaum


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:16 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz