Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Textstellen auslesen (https://www.delphipraxis.net/68833-textstellen-auslesen.html)

Q-Dog 6. Mai 2006 10:38


Textstellen auslesen
 
Hallo,

ich habe schon die Forensuche benutzt aber leider nichts gefunden.

Also mein Problem ist folgendes:
Ich möchte aus einem EditFeld, in dem z.B folgender Text steht:
Zitat:

Text (x 1)
anderer Text (x 7)
nochmal anderer (x 10)
Text (x 3)
nur die Zahlen auslesen und dann später mit ihnen weiterrechnen.

Gibt es da eine Möglichkeit das irgendwie zu bewältigen?
Und würdet ihr dazu ein Edit-Feld nehmen, weil der Text halt untereinander ist und nicht nur alles in einer Zeile.



Mfg Q-Dog

fkerber 6. Mai 2006 10:43

Re: Textstellen auslesen
 
Hi!

Es würde sich anbieten dafür eine Stringlist zu nutzen. Allerdings ist ein Edit doch einzeilig, also ein Edit wäre wohl nicht geeignet.

Wenn es immer die letzten Zeichen der Zeile sind und immer ein Leerzeichen davor ist, dann solltest du mal nach Pos bzw. PosEx schauen. Danach hilft dir Copy sicherlich weiter.


Ciao Frederic

eddy 6. Mai 2006 10:47

Re: Textstellen auslesen
 
Hallo Q-Dog,

nimm ein Memo:
Delphi-Quellcode:
var
  i, j : integer;
  r : real;

// ....
for i := 0 to mem.Lines.count - 1 do begin
  s := mem.Lines.Strings[i];
  hs := '';
  for j := 1 to length(s) do
    if Pos(s[j], '0123456789+-.') > 0 then hs := hs + s[j];
  if hs = '' then hs := '0';
  r := StringToFloat(hs);
  speicherort_fuer_verarbeitung_der_zahlen := r;
end;
Nicht getestet, aber so in etwa sollte es gehen.

mfg
eddy

Q-Dog 6. Mai 2006 10:52

Re: Textstellen auslesen
 
schonmal vielen dank für die Antworten :)

also es ist nicht immer das letzte Zeichen, denn eine Klammer umgibt die Zahl z.B. (x 9) / (x 15).

ich werd das mit dem Memo gleich mal ausprobieren

/Edit
also memo eignet sich wohl besser als edit feld.
hab den code jetzt mal umgeändert:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i, j : integer;
  r : real;
  s, hs: string;
begin
// ....
for i := 0 to mem.Lines.count - 1 do begin
  s := mem.Lines.Strings[i];
  hs := '';
  for j := 1 to length(s) do
    if Pos(s[j], '0123456789+-.') > 0 then hs := hs + s[j];
  if hs = '' then hs := '0';
  listbox1.Items.add(hs);
end;
klappt wunderbar, vielen Dank :D



Mfg Q-Dog

happyaura 6. Mai 2006 11:02

Re: Textstellen auslesen
 
müll geschrieben und gedacht...

Q-Dog 6. Mai 2006 11:04

Re: Textstellen auslesen
 
Zitat:

Zitat von happyaura
wenn Du nur ganze zahlen hast, kannst du StrToInt(s) benutzen, dann kannst Du das in einer Integervariable abspeichern

jo hab ich ;)

und das mit dem Speichern hab ich nun auch verstanden *g

Nochmal vielen Dank an euch alle :-D



Mfg Q-Dog

Q-Dog 6. Mai 2006 12:42

Re: Textstellen auslesen
 
eine Frage hätte ich dann doch noch, sry.

Wie kann ich einen Text vor einem bestimmten Zeichen auslesen.

sprich wenn wir das Beispiel von oben nehmen:
Zitat:

Text (x 1)
anderer Text (x 7)
nochmal anderer (x 10)
Text (x 3)
in jeder Zeile den Text vor dem Klammer auf "(" Zeichen: also "Text" / "anderer Text"...



Mfg Q-Dog

SnuffMaster23 6. Mai 2006 12:55

Re: Textstellen auslesen
 
Probiers mit copy:
Delphi-Quellcode:
TextVorKlammer := Copy(Memo1.Lines[i], 0, Pos('(', Memo1.Lines[i]) - 1)
Das müsste hinhauen, hab ich jetz auswendig hingeschrieben

Q-Dog 6. Mai 2006 12:59

Re: Textstellen auslesen
 
hui, ihr seid die besten :wink:


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