![]() |
replace(all) ?
Ich grüße Euch!
Ich habe folgendes Problem: Ich möchte Temperaturen aus einer Datei in ein Memofeld laden. Diese Daten muss ich dann Formatieren, so das die Werte untereinander und nicht Hintereinander stehen.
Delphi-Quellcode:
vorher
"Meßprotokoll AD-USB 4" "Seriennummer 4" "Beginn 10.11.2003 13:45:34" " " "Nr;Datum Uhrzeit;AI0;AI1;AI2;AI3;AI4;AI5;AI6;AI7;DI0;DI1;DI2;DI3;DI4;DI5;DI6;DI7;" "1;10.11.2003 13:45:35;-5,0719;-1,6563;-1,0885;-0,2155;-0,8426;-0,0774;-0,2419;0,0205;11111111;"
Delphi-Quellcode:
nachher
"Meßprotokoll AD-USB 4" "Seriennummer 4" "Beginn 10.11.2003 13:45:34" " " Nr Datum Uhrzeit AI0 AI1 AI2 AI3 . . . Mit einem Zeichen ändern klappt das auch Prima. Nur Muss er hat viele Sachen ändern und ich wäre über ratschläge Dankbar. Habe mal das bisherige mal mit angehängt. Ich habe mir auch schon diesen stringreplace Befehl angeschaut, nur kapier ich den noch nicht so richtig. Komme nicht mit der Flag Einstellung klar. Versucht es aber bitte nicht zu kompliziert zu machen, sonst steig ich nicht mehr hinterher. Bin schliesslich noch Angänger in Delphi ;)
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin memo1.Lines.Clear; memo1.Lines.LoadFromFile('werte\text.txt'); with TReplaceDialog(Sender) do begin FindText:=';'; ReplaceText:=#13#10; SelPos := Pos(FindText, Memo1.Lines.Text); if SelPos > 0 then begin Memo1.SelStart := SelPos - 1; Memo1.SelLength := Length(FindText); Memo1.SelText := ReplaceText; end else MessageDlg(Concat('Could not find "', FindText, '" in Memo1.'), mtError, [mbOk], 0); end; end; |
Re: replace(all) ?
Ersätze doch die mit StringReplace die ";" durch #13#10. Das müsste es doch schon gewesen sein oder?
|
Re: replace(all) ?
EDIT <<< Dieser Teil wurde von civilcrucher wegen Dummheit gelöscht >>> /EDIT
Leider verstehe ich den StringReplace-Befehl noch nicht wirklich und die OH hilft mir leider auch nicht weiter. :( "Flags: TReplaceFlags" Was verlangt er denn hier für eine Eingabe?!? |
Re: replace(all) ?
Hi,
ich denke mal das es so geht
Delphi-Quellcode:
So hab ich zumdest beim schnellen Lesen in der Refernz verstanden ....
StringReplace(<alterString>,<neuerString>,rfReplaceAll AND rfIgnoreCase);
|
Re: replace(all) ?
fast richtig (wenn mich mein Erinnerungsvermögen nicht täuscht)
Delphi-Quellcode:
StringReplace(<alterString>,<neuerString>,[rfReplaceAll,rfIgnoreCase]);
|
Re: replace(all) ?
Ahhh... Vielen Dank, Nun funktioniert es! :)
:love: :dp: :love: |
Re: replace(all) ?
Hmm... ich hänge gerade mit meinem Programm. Ich poste das einfach mal hierrein, da es eigentlich noch hier reingehört. Sollte das nicht mehr der Fall sein, kurze Nachricht an mich und ich Poste es in einen neuen Thread.
Also, die Aufgabe meines Programms müsste ja mittlerweile klar sein. Folgendes Ausgangsmaterial nochmal zur Veranschauung "Meßprotokoll AD-USB 4" "Seriennummer 4" "Beginn 10.11.2003 13:45:34" " " "Nr;Datum Uhrzeit;AI0;AI1;AI2;AI3;AI4;AI5;AI6;AI7;DI0;DI1;DI2;DI3;DI4;DI5;DI6;DI7;" "1;10.11.2003 13:45:35;-5,0719;-1,6563;-1,0885;-0,2155;-0,8426;-0,0774;-0,2419;0,0205;11111111;" Diese digitalen Eingänge (DI1-DI7) werden in einem Feld angezeigt. Diese muss ich auflösen in jeweils eine Zeile. 1 1 1 . . Da hier nur jeweils 1 oder 0 kommen kann, müsste das doch zu machen sein, oder? Nur leider sind meine Kenntnisse noch nicht groß genug um das hinzubekommen. Evtl. wäre auch schon nen Tipp für nen Befehl super. Finde nämlich irgenwie gar nix.
Delphi-Quellcode:
Das ist zwar kein soooo schöner Quelltext, aber um zu verdeutlichen wie es derzeit bei mir läuft.
procedure TForm1.Button1Click(Sender: TObject);
begin memo1.Lines.Clear; memo1.Lines.LoadFromFile('werte\text.txt'); end; procedure TForm1.Button2Click(Sender: TObject); begin Memo1.Text:=StringReplace(Memo1.Text,';',#13#10,[rfReplaceAll,rfIgnoreCase]); Memo2.Text:=StringReplace(Memo1.Text,'"','',[rfReplaceAll,rfIgnoreCase]); Label1.Caption:=Memo2.Lines.Strings[0]; Label2.Caption:=Memo2.Lines.Strings[1]; Label3.Caption:=Memo2.Lines.Strings[2]; zei:=0; i:=4; while zei<Tabelle1.RowCount do begin sp:=0; while sp<tabelle1.ColCount do begin Tabelle1.Cells[sp,zei] := Memo2.Lines.Strings[i]; i:=i+1; sp := sp+1; end; i := i+1; zei := zei+1; end; end; |
Re: replace(all) ?
So, ich habe mein Problem jetzt gelöst. Falls jemand mal ein ähnliches Problem hat, poste ich hier mal meine Lösung.
Delphi-Quellcode:
Ich hoffe mal, jemand kann was damit anfangen. Ist nicht perfekt, funktioniert aber in meinem Fall ohne Probleme.
memo1.Lines.Clear;
memo1.Lines.LoadFromFile('werte\text.txt'); Memo1.Text:=StringReplace(Memo1.Text,';',#13#10,[rfReplaceAll,rfIgnoreCase]); Memo1.Text:=StringReplace(Memo1.Text,'"','',[rfReplaceAll,rfIgnoreCase]); i:=33; while Memo1.Lines.Strings[i] <> '' do begin search:=FormatFloat('0/0/0/0/0/0/0/0',StrToInt(Memo1.Lines.Strings[i])); Memo1.Text:=StringReplace(Memo1.Text,Memo1.Lines.Strings[i],search,[rfIgnoreCase]); Memo1.Text:=StringReplace(Memo1.Text,'/',#13#10,[rfReplaceAll,rfIgnoreCase]); i:=i+19; end; Memo1.Text:=StringReplace(Memo1.Text,'/',#13#10,[rfReplaceAll,rfIgnoreCase]); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:49 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