Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi copy pos Problem (https://www.delphipraxis.net/24142-copy-pos-problem.html)

Micha 16. Jun 2004 08:21


copy pos Problem
 
Guten Morgen,

Ich habe mir hier im Forum nachfolgenden Code zusammengebastelt und wollte jetzt wissen ob der so passt oder ob es vielleicht einfacher geht.

Erstmal:
Am Anfang steht eine Textdatei mit folgendem Beispielinhalt: 6,80;2,40
Am Ende soll der String so aussehen: Muster AG 6,80 (2,40%) +++ Parkett +++


Delphi-Quellcode:
procedure Tfrm_main.btn_txt_ladenClick(Sender: TObject);
var
  werte : string;
  s: String;
  prozwert: String;
  n: Integer;
  pagwert: string;
Begin
// Werte werden von einem Textfile gezogen
// Textfile enthält folgende Daten: 6,80;2,34
// zur Info: Datei enthält Börsenkurs;Veränderung in Prozent

 List:= TStringList.Create;
 List.LoadFromFile(edt_filename.text);
 werte := List.text;

 // Läd Prozentwert
   prozwert:= werte;
   prozwert:=Copy(prozwert, Pos(';', prozwert)+1, Length(prozwert));

  s := ';' + werte + ';';
  n := 1;
  while true do
  begin
    pagwert := Copy(s,PosEx(';',s,n)+1,PosEx(';',s,n + 1) - PosEx(';',s,n) - 1);
    if pagwert = '' then exit;
    n := PosEx(';',s,PosEx(';',s,n)+1) + 2;

// Ausgabe in einem Edit-Feld
    edt_ticker0.text := 'Muster AG ' + pagwert + ' (' + prozwert + '%) +++ PARKETT +++ ';
  end;
end;

MrKnogge 16. Jun 2004 08:34

Re: copy pos Problem
 
Hallo

Delphi-Quellcode:
prozwert:=Copy(prozwert, Pos(';', prozwert)+1, Length(prozwert));
wird so nicht funktionieren, da prozwert, ja noch ein leerer, bzw nicht initialiserter String ist, du musst also entweder 3 nehmen, oder wenn die Nachkommastellen nicht immer gleich sind, nach dem nächsten Trennzeichen suchen, und die länge erst ausrechnen.

Micha 16. Jun 2004 09:10

Re: copy pos Problem
 
Ob die Stellen-Anzahl immer gleich lang ist kann ich leider nicht sicher sagen.
Deswegen würde ich die Lösung bevorzugen, nach dem nächsten Trennzeichen zu suchen.

Aber nach dem zweiten Wert z. B. 2,80 ist die Datei zu Ende.

Wie funktioniert das dann?

generic 16. Jun 2004 09:12

Re: copy pos Problem
 
mit einen tregex geht das viel leichter und mit weniger code !

http://regexpstudio.com/TRegExpr/TRegExpr.html

gruss

maximov 16. Jun 2004 11:31

Re: copy pos Problem
 
Warum lässt du das nicht automatisch von der stringliste erledigen?

Man kann den 'NameValueSeperator' (oder wie das heisst) auf ';' setzen und kann dann leicht 'names[i]' und 'values[i]' auf die items zu greifen.

sparst du das nervige geparse :wink:


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