AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ziffern aus String filtern

Ein Thema von Borti · begonnen am 15. Sep 2006 · letzter Beitrag vom 15. Sep 2006
Antwort Antwort
Borti

Registriert seit: 11. Okt 2003
151 Beiträge
 
#1

Ziffern aus String filtern

  Alt 15. Sep 2006, 14:21
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
Ich hab's versucht
(auch wenn's nicht so aus sieht)
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#2

Re: formatierten Sting in Integer?

  Alt 15. Sep 2006, 14:38
Helfen können dir z.B. POS, PosEx, TryStrToInt(), copy, ...
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
Borti

Registriert seit: 11. Okt 2003
151 Beiträge
 
#3

Re: formatierten Sting in Integer?

  Alt 15. Sep 2006, 14:45
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
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?
Ich hab's versucht
(auch wenn's nicht so aus sieht)
  Mit Zitat antworten Zitat
delphis spassbremse
(Gast)

n/a Beiträge
 
#4

Re: formatierten Sting in Integer?

  Alt 15. Sep 2006, 14:54
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:

geteilterstring := (Trim(GetToken(stringdergeteiltwerdensoll,'#',1))); // # = trennzeichen 1 = welcher teil vom string ausgelesen werden soll
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#5

Re: formatierten Sting in Integer?

  Alt 15. Sep 2006, 15:01
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...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:08 Uhr.
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