Einzelnen Beitrag anzeigen

Benutzerbild von JanWe
JanWe

Registriert seit: 23. Mär 2015
Ort: NRW
78 Beiträge
 
Delphi 7 Personal
 
#3

AW: Zeichen in String ersetzen

  Alt 20. Dez 2016, 01:02
Hi,

danke Dir für Deine Antwort:
Allerdings muß ich dazu sagen, dass ich nur Delph 5 habe (und derzeit keinen Platz, um Lazarus oder eine Trial zu installieren, da ich gerade wichtige Planungsvideos auf meinem Laptop habe.

Mhh, ja, sicher ist da viel auf einemal.
Angefangen hatte ich auch erst nur mit den x01 und 01 (Typ A; Typ B) Zeichenketten und die bearbeitet. Das ging auch gut.

Dann dachte ich mir .. Ok, die restlichen kannste ja noch mit Kommt ein Komma vor oder wenn, sogar mehrere ...


und eigentlich würde ich das gerne mit Pointern machen (darum auch der Inc()-operator und einzelne Vegleich

hier nochmal der VErsuch einer verkürzten Version der oben ... aber ich seh gerade, der Übersicht hilft das gar nicht.
und die Ergebnisse sind auch wieder total andere:

0,,25,01640X0174,01747,23,,,,47X014747
wird zu
025, Typ B: ,640, Typ A: 174, Typ B: ,747,2347, Typ A: 14747
Delphi-Quellcode:
procedure TForm1.Button9Click(Sender: TObject);
var Rest, s, TEX: string;
  Menge, Laenge, i: Integer;
begin
// 8 8 88 888 X01
  S := '2,9,0171,,25,01640X0174,01747,23,,,,47X014747'; //

  S := '0,,25,01640X0174,01747,23,,,,47X014747'; //
  laenge := length(s);
  i := 0;
  Menge := 0;
  while i < laenge do
  begin
    inc(i);
    if s[i] = '5then
      Caption := s[i];
    if (s[i] = 'X') and (s[i + 1] = '0') then // -> x01
    begin
      if (s[i + 2] = '1') then // wenn X01
            TEX := TEX + ',' + ' Typ A: ';
      inc(i);
    end
    else ////////////////////////////////////
// Caption := s[i];
      if (s[i] = '0') and (s[i + 1] = '1') then // normaler 01
      begin
        TEX := TEX + ',' + ' Typ B: ';
        inc(i);
      end
      else ////////////////////////////////////
        if (s[i] = ',') then // and (s[i + 1] = ',') then // DOPPELTE Trenner finden
        begin
          inc(Menge);
        end
        else ////////////////////////////////////

          if Menge > 0 then
          begin
            Caption := s[i];
            if Menge = 1 then
              TEX := TEX + ',' + s[i]
            else
              TEX := TEX + s[i];
            Menge := 0; //
          end
          else
            TEX := TEX + s[i]; // LAST CHANGE


  end; // END WHILE
  Memo2.text := TEX;
  Memo1.text := S;
end; //
Mit Regex usw. kenn ich mich gar nicht aus. ...
Jan
Allen demnächst ein gutes 2023!
  Mit Zitat antworten Zitat