AGB  ·  Datenschutz  ·  Impressum  







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

replace(all) ?

Ein Thema von civilcrucher · begonnen am 10. Nov 2003 · letzter Beitrag vom 12. Nov 2003
Antwort Antwort
civilcrucher

Registriert seit: 10. Nov 2003
Ort: Berlin
5 Beiträge
 
Delphi 6 Professional
 
#1

replace(all) ?

  Alt 10. Nov 2003, 21:47
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;
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: replace(all) ?

  Alt 10. Nov 2003, 21:50
Ersätze doch die mit StringReplace die ";" durch #13#10. Das müsste es doch schon gewesen sein oder?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
civilcrucher

Registriert seit: 10. Nov 2003
Ort: Berlin
5 Beiträge
 
Delphi 6 Professional
 
#3

Re: replace(all) ?

  Alt 10. Nov 2003, 22:09
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?!?
  Mit Zitat antworten Zitat
BungeeBug

Registriert seit: 19. Dez 2002
Ort: zuhause?!
227 Beiträge
 
Delphi 6 Personal
 
#4

Re: replace(all) ?

  Alt 10. Nov 2003, 22:19
Hi,

ich denke mal das es so geht

StringReplace(<alterString>,<neuerString>,rfReplaceAll AND rfIgnoreCase); So hab ich zumdest beim schnellen Lesen in der Refernz verstanden ....
MfG BungeeBug
Wer andern eine Grube gräbt sollte auf Gasleitungen achten!!!!
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: replace(all) ?

  Alt 10. Nov 2003, 22:22
fast richtig (wenn mich mein Erinnerungsvermögen nicht täuscht)
StringReplace(<alterString>,<neuerString>,[rfReplaceAll,rfIgnoreCase]);
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
civilcrucher

Registriert seit: 10. Nov 2003
Ort: Berlin
5 Beiträge
 
Delphi 6 Professional
 
#6

Re: replace(all) ?

  Alt 10. Nov 2003, 22:41
Ahhh... Vielen Dank, Nun funktioniert es!

  Mit Zitat antworten Zitat
civilcrucher

Registriert seit: 10. Nov 2003
Ort: Berlin
5 Beiträge
 
Delphi 6 Professional
 
#7

Re: replace(all) ?

  Alt 11. Nov 2003, 15:56
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:
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;
Das ist zwar kein soooo schöner Quelltext, aber um zu verdeutlichen wie es derzeit bei mir läuft.
  Mit Zitat antworten Zitat
civilcrucher

Registriert seit: 10. Nov 2003
Ort: Berlin
5 Beiträge
 
Delphi 6 Professional
 
#8

Re: replace(all) ?

  Alt 12. Nov 2003, 21:20
So, ich habe mein Problem jetzt gelöst. Falls jemand mal ein ähnliches Problem hat, poste ich hier mal meine Lösung.

Delphi-Quellcode:
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]);
Ich hoffe mal, jemand kann was damit anfangen. Ist nicht perfekt, funktioniert aber in meinem Fall ohne Probleme.
  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 08:35 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