Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ziffern aus String filtern (https://www.delphipraxis.net/77167-ziffern-aus-string-filtern.html)

Borti 15. Sep 2006 14:21


Ziffern aus String filtern
 
Hallo!

ich hab einen String, der aus einer Ziffer und aus mehreren Buchstaben besteht.
Zum Beipiel: 'Masse = 7 kg'
Die Buchstaben im String ändern sich nie, lediglich die Ziffer ist unterschiedlich.
Wie kann ich prüfen, ob die Buchstaben wirklich 'Masse = # kg' sind und wie kann ich die enthaltene Ziffer in einen integer konvertieren.
Es wäre eine Möglichkeit den Sting in mehrere Teile zu zerlegen und einzeln zu prüfen bzw zu konvertieren, aber gibt's da nicht eine elegantere Lösung?

Gruß,
Borti

TeronG 15. Sep 2006 14:38

Re: formatierten Sting in Integer?
 
Helfen können dir z.B. POS, PosEx, TryStrToInt(), copy, ...

Borti 15. Sep 2006 14:45

Re: formatierten Sting in Integer?
 
Das würde alles auch wieder auf ein zerlegen des Strings rauslaufen aber ich denk da an folgendes:

man kann ja einen integer mit Hilfe einer maske in einen String konvertieren
Delphi-Quellcode:
formatfloat('####0.000',45.8)
geht das nicht auch rückwärts, dass man über eine Maske sagt, wo sich die Buchstaben und wo die Ziffern verbergen?

delphis spassbremse 15. Sep 2006 14:54

Re: formatierten Sting in Integer?
 
Zerlegen hiermit:

Delphi-Quellcode:
function TForm1.GetToken(aString, SepChar: string; TokenNum: Byte): string;
var
  Token: string;
  StrLen: Byte;
  Num: Byte;
  EndofToken: Byte;
begin
  StrLen    := Length(aString);
  Num       := 1;
  EndofToken := StrLen;
  while ((Num <= TokenNum) and (EndofToken <> 0)) do
  begin
    EndofToken := Pos(SepChar, aString);
    if EndofToken <> 0 then
    begin
      Token := Copy(aString, 1, EndofToken - 1);
      Delete(aString, 1, EndofToken);
      Inc(Num);
    end
    else
      Token := aString;
  end;
  if Num >= TokenNum then
    Result := Token
  else
    Result := '';
end;
Benutzen hiermit:

Delphi-Quellcode:
geteilterstring := (Trim(GetToken(stringdergeteiltwerdensoll,'#',1))); // # = trennzeichen 1 = welcher teil vom string ausgelesen werden soll

Go2EITS 15. Sep 2006 15:01

Re: formatierten Sting in Integer?
 
Mach mal im Beitragstitel den "Sting" oben mal ein "STRING".
Der Beitragstitel ist irreführend. Bei 40.000 Beiträgen(?) liest man sich zu Tode.
Und "Ziffern aus String filtern" passt wohl eher.

Parse den Text zwischen "=" und "kg".
Also pos('=',DeinString) liefert die Position von = und pos('kg',DeinString) die Position
von 'kg'.
So müsste es (ungetestet) gehen:
Var Zahlen als String anlegen...
Zahlen:=Copy(Deinstring, pos('=',Deinstring)+1,Pos('kg',Deinstring)-pos('=',Deinstring)+1);

Roter Kasten:
Ich sende trotzdem mal meinen Vorschlag...


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:27 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