Einzelnen Beitrag anzeigen

Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Zeilenumbruch ersetzen Algorithmus

  Alt 10. Mär 2018, 22:34
Ich weiß ja nicht wie Deine Ausgabe der Text-Datei vonstatten geht, erstellt dein Parser einen String pro Zeile?
Falls ja, check doch lediglich die letzten 2 zeichen nach deinen Wert und ersetz das dann.
Nachtrag:
Bzw. implementier in deinem Parser diese Zusatzfunktion, da du ja bereits eine Zeile in irgendeiner art und weise besitzt check die letzten 2 bytes.
Ein Einblick in deinen Parser wäre hilfreich.
Weiterer Nachtrag:
Delphi-Quellcode:
//hier ein mini Beispiel für Strings, mit bissl justierung auch für PChar's bzw alles wo man "position + wert" nutzt, daß Prinzip bleibt immer das selbe
Function CalibrateString( EineParserZeile : String ) : String;
begin
 // letzte 2 zeichen nach 0D0A checken
 if Length(EineParserZeile) > 1 then // falls man einen minimum längen-check einbaut wird's sicherer. optional.
  if ((EineParserZeile[Length(EineParserZeile)-1] = char($0D)) and (EineParserZeile[Length(EineParserZeile)] = char($0A))) then
  begin
   EineParserZeile[Length(EineParserZeile)-1] := char($0A);
   // hier fehlt ein aufruf um das letzte zeichen zu entfernen, ich hab grad kein delphi parat aber für Strings würd ich einen Copy() Befehl verwenden.
  end;
 // letztes zeichen nach 0D checken
 if Length(EineParserZeile) >= 1 then // für mehr Speed kann man auch die ausführung oben mit einbauen aber falls tatsächlich mal eine Zeile mit nur einem char($0D) reinkommt wird die nicht verarbeitet
  if EineParserZeile[Length(EineParserZeile)] = char($0D) then EineParserZeile[Length(EineParserZeile)] := char($0A);
 // Rückgabe an dein Programm
 Result := EineParserZeile;
end;

//ps: als "Case" kann man das ganze auch verpacken.
Gruß vom KodeZwerg

Geändert von KodeZwerg (11. Mär 2018 um 10:17 Uhr) Grund: Code optimiert
  Mit Zitat antworten Zitat