![]() |
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; |
Re: copy pos Problem
Hallo
Delphi-Quellcode:
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.
prozwert:=Copy(prozwert, Pos(';', prozwert)+1, Length(prozwert));
|
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? |
Re: copy pos Problem
mit einen tregex geht das viel leichter und mit weniger code !
![]() gruss |
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 02:17 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