Delphi-PRAXiS

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

sniper_w 7. Mär 2005 17:51

Re: String auseinander nehmen
 
Zitat:

Nimm doch Schau in die Delphi-Hilfepos:
Beachte dabei nur, dass POS CaseSensitive ist.

Jasocul 7. Mär 2005 17:54

Re: String auseinander nehmen
 
Und wenn du Grundlagen-Kenntnisse bei Stringverarbeitung benötigst, schaust du einfach auf meiner Homepage vorbei. Da gibts auch dokumentierte Sourcen. Die zeigen dann genau, wie die Funktionen und Prozeduren reagieren.

kingflo 7. Mär 2005 18:02

Re: String auseinander nehmen
 
Wie mache ich das denn genau mit Copy?

Also er soll nach line alles bis zum ende nehmen.

Hatte es so aber so gehts net

Delphi-Quellcode:
p:= pos('line',str);
if p >0 then begin
i:= StrToInt(str[length(str)]);
result:=Copy(str,p,i);
showmessage(result);

end ;
und result sollte eigentlich die Zahl nach Line sein.
Aber result ist so li von line

Jasocul 7. Mär 2005 18:09

Re: String auseinander nehmen
 
Delphi-Quellcode:
str := 'xxxline555';
p:= pos('line',str);
if p >0 then begin
  result:=Copy(str,p+4,length(str));
showmessage(result);
Habe gerade kein Delphi zum Prüfen hier.

kingflo 7. Mär 2005 18:16

Re: String auseinander nehmen
 
Das hatte ich gerade auch hinbekommen lustiger zufall.

Aber danke es geht natürlich man bin ich doof.

hab das mit p+4 und den echt dummen fehler in i auch gerade gefunden aber trotzdem Danke.

Also thema abgeschlossen

DANKE AN ALLE


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:23 Uhr.

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