AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein nicht alle Strichpunkte durch #13 setzen lassen
Thema durchsuchen
Ansicht
Themen-Optionen

nicht alle Strichpunkte durch #13 setzen lassen

Ein Thema von Helmi · begonnen am 10. Sep 2005 · letzter Beitrag vom 10. Sep 2005
Antwort Antwort
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#1

nicht alle Strichpunkte durch #13 setzen lassen

  Alt 10. Sep 2005, 20:30
Hallo,

ich hock schon seit einiger Zeit vorm Rechner und grübel über ein Problem.
Nur leider will mir einfach keine gute Lösung einfallen.

Aber hier erst mal mein Problem.

Ich hab diesen String:
Name=ID_STATE_Test;Section=3;Mask=ID_MASK_Testmaske;Previous=;Calc=;Horz_Button={Button1={Bitmap=;Length=1;Text=ID_TEXT_Horz_Button1;ID=ID_MASK_Test;Kind=1;Active=1}};Vert_Button={Button1={}Button2={}Button3={}Button4={}Button5={}} Wie ihr schon sehen könnt ist das Trennzeichen ein ";".

Dieses Trennzeichen soll durch ein "#13" ersetzt werden um in eine Stringliste geschrieben zu werden (Stringlist.text).

Die Liste soll zum schluss wie folgt aussehen:
Delphi-Quellcode:
Name=ID_STATE_Test
Section=3
Mask=ID_MASK_Testmaske
Previous=
Calc=
Horz_Button={Button1={Bitmap=;Length=1;Text=ID_TEXT_Horz_Button1;ID=ID_MASK_Test;Kind=1;Active=1}};
Vert_Button={Button1={}Button2={}Button3={}Button4={}Button5={}}
mein problem ist, dass ich nicht einfach mit StringReplace nach dem Trennzeichen suchen kann und es durch "#13" zu ersetzen, da es innerhalb von geschwungenen Klammern nicht ersetzt werden soll (z.B. bei "Horz_Button")

Weiss jemand einen Lösungsvorschlag wie ich das machen könnte?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
bttb930

Registriert seit: 6. Okt 2003
372 Beiträge
 
#2

Re: nicht alle Strichpunkte durch #13 setzen lassen

  Alt 10. Sep 2005, 20:44
durchlauf den string zeichen für zeichen und merk dir ob du gerade innerhalb von { und } bist oder nicht. wenn du drin bist, dann ersetzt du ; nicht, sonst doch.
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: nicht alle Strichpunkte durch #13 setzen lassen

  Alt 10. Sep 2005, 20:46
Die Bereiche in denen die ; nicht ersetzt werden sollen liegen doch alle in {}
Du suchst jetzt einfach die Klammern und suchst dazu die schließenden elemente.
Dann machst du statt mit Stringreplace das mit Pos und wenn das ergebniss von pos innerhalb der Klammern liegt, macht er nichts, liegt es auserhalb ersetzt er es einfach.
Klingt in meinen Ohren logisch, versuchs einfach mal
Benjamin
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#4

Re: nicht alle Strichpunkte durch #13 setzen lassen

  Alt 10. Sep 2005, 20:49
Oder einfach so
Delphi-Quellcode:
procedure TForm1.btn_ParsClick(Sender: TObject);
var
  ndx : integer;
  blubb : string;
  no_replace : boolean;
  sl : TStringList;
begin
  no_replace:= False;
  blubb := 'Name=ID_STATE_Test;Section=3;Mask=ID_MASK_Testmaske;Previous=;Calc=;Horz_Button={Button1={Bitmap=;Length=1;Text=ID_TEXT_Horz_Button1;ID=ID_MASK_Test;Kind=1;Active=1}};Vert_Button={Button1={}Button2={}Button3={}Button4={}Button5={}}';
  for ndx := 1 to Length (blubb) do
  begin
    if (blubb[ndx] = '{') then INC (no_replace);
    if (blubb[ndx] = '}') then DEC (no_replace);
    if not (no_replace) then
    begin
      if blubb[ndx] = ';then blubb[ndx] := #13;
    end;
  end;
  sl := TStringList.Create;
  try
    sl.Text := blubb;
    memo1.Lines.Assign(sl); // Als Test in ein Memo
  finally
    sl.free;
  end;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#5

Re: nicht alle Strichpunkte durch #13 setzen lassen

  Alt 10. Sep 2005, 21:02
Vielen Dank Sharky für deine Hilfe

Genau das was ich brauche!!
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  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 15:36 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