![]() |
String
Hallo zusammen,
habe doch noch eine Frage zum String, wie kann man aus diesem String "c:\test 80" nur die 80 auslesen, und an eine Variable übergeben. Vor 80 ist ein Leerzeichen und der String ist in einer .txt, oder ist es möglich in einem String, nach einem Int-Wert zu suchen und an eine Variable zu übergeben. |
Re: String
such einfach nach dem Leerzeichen und kopier dann den Text ab dem Leerzeichen. Oder alternativ: Füge alle gefundenen Zifferzeichen zusammen.
erste Methode:
Delphi-Quellcode:
zweite Methode:
var
s:string; begin for i:=length(s) downto i do if s[i]=' ' then break; zahl:=copy(s,i,length(s)-i); end;
Delphi-Quellcode:
var
s:string; const ziffern='0123456789'; begin zahl:=''; for i:=1 to length(s) do if pos(s[i],ziffern)>0 then zahl:=zahl+s[i]; end; |
Re: String
Moin Michael,
statt
Delphi-Quellcode:
kannst Du auch einfach
zahl:=copy(s,i,length(s)-i);
Delphi-Quellcode:
schreiben, wenn der Rest des Strings genommen werden soll.
zahl:=copy(s,i,MaxInt);
Copy hört sowieso auf, wenn der String zu Ende ist. Das spart dann die Berechnung. |
Re: String
Hallo,
habe folgendes versucht:
Delphi-Quellcode:
aber in Label wird nichts ausgegeben und eigentlich sollte doch
procedure TForm1.Button1Click(Sender: TObject);
var s,zahl:string; i:Integer; begin s:='TEST 38'; for i:=length(s) downto i do if s[i]=' ' then break; zahl:=copy(s,i,MaxInt); Label1.Caption:=zahl; end; end. 38 übergeben werden kann mir jemand sagen wo der Fehler liegt. |
Re: String
Ich würds eher mit downto 1 probieren.
Und da fehlt ein begin...end; ansonsten wird nur gebreakt.:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var s,zahl:string; i:Integer; begin s:='TEST 38'; for i:=length(s) downto i do begin if s[i]=' ' then break; zahl:=copy(s,i,MaxInt); Label1.Caption:=zahl; end; end; end. |
Re: String
Hallo blauglaser,
Zitat:
setzen und mit F7 durchsteppen. Du wirst Dich wundern, wie schnell die Funktion beendet wird. :roteyes: Gruß Question_mark |
Re: String
Zitat:
|
Re: String
Das tut er doch.
|
Re: String
Hallo dahead,
Zitat:
Wie konnte ich als 12-jähriger, absoluter Noop es auch nur wagen, hier einfach zu posten :oops: Ich hoffe, dass Du als absolut erfahrener, anerkannter Delphi-Experte mit so ungeheuerlich wertvollen Forumsbeiträgen mir meinen kleinen, bescheidenen Beitrag verzeihst. Wird auch bestimmt nicht wieder vorkommen. Question_mark |
Re: String
Kommt das nur mir so vor, oder wiederholt sich da was?
![]() Und dann die Thteadnamen ... geht das nicht etwas genauer? ... "String", oder "String Variable" sind ja nicht gerade aussagekräftig :warn: |
Re: String
Zitat:
Selbst wenn Du 50 wärst, wäre das ein gelungener Konter. So, dahead. Der "Debugger sagt" soetwas natürlich nicht, weil der Debugger von Delphi nicht reden kann :mrgreen: . Ansonsten hat das Fragezeichen aber Recht, denn den Debugger benutzt man mit Menschenverstand und dann sieht man auch, wohin die Reise (bzw. der Programmcounter) geht. Ich chleudere Dir hiermit dein Post churück: Zitat:
Delphi-Quellcode:
Das klappt nicht. Gemeint ist vielleicht
var
s,zahl:string; i:Integer; begin s:='TEST 38'; for i:=length(s) downto i do // <--- for i... downto i? niemals. wenn, dann ...downto 1 begin if s[i]=' ' then break; zahl:=copy(s,i,MaxInt); Label1.Caption:=zahl; end; end;
Delphi-Quellcode:
Aber das ist auch falsch, weil eine Schleifenvariable nach Beendigung der Schleife undefiniert ist.
begin
s:='TEST 38'; for i:=length(s) downto i do if s[i]=' ' then break; zahl:=copy(s,i,MaxInt); // Break würde hierhin springen Label1.Caption:=zahl; end; Ganz bestimmt klappen tut das hier:
Delphi-Quellcode:
Das Rumfrotzeln hier im Forum geht mir langsam, aber sicher auf den Keks, zumal 99% der Rumwixxereien Eigentore sind und deswegen peinlich für die Austeilenden (Bin ja auch nicht besser, gelobe aber Besserung).
...
s:= 'TEST 38'; p := Pos (' ',s); if p=0 then Raise Exception.Create('Kein Leerzeichen'); Label1.Caption := Copy (s, p+1, MaxInt); ... |
Re: String
ok, meine frage war wohl etwas zu schroff formuliert. das einzige was ich damit sagen wollte war, dass der thread-ersteller mit den spärlichen infos über den debugger sicherlich reichlich wenig anfangen kann. als question_mark dann allerdings seinen beitrag nach meinem kommentar dementsprechend erweitert hat, war meine frage natürlich nicht mehr gerechtfertigt.
ich entschuldige mich daher für meinen obigen kommentar bei question_mark. (@alzaimar: das mit dem debugger bezog sich nicht auf "reden/sprechen", sondern auf "dein". dennoch danke für deinen kommentar!). |
Re: String
Hallo dahead,
ich sah mich doch gezwungen, meinen Beitrag etwas zu ergänzen. Mir ist halt schnell klargeworden, dass nicht jeder in der Lage ist, dem Inhalt des Beitrags intellektuell zu folgen. Was sich ja dann auch bestätigt hat. Gruß Question_mark |
Re: String
Zitat:
|
Re: String
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:56 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