Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: Punkte in Dateinamen ersetzen.

  Alt 23. Okt 2010, 18:09
Moin Zusammen,

man kann das natürlich auch alles mit Pos, PosEx und Copy machen, läuft dann aber Gefahr strings oft in der Länge zu ändern, was, je nach Anzahl, auch auf die Performace drücken kann.
Ich würd's so lösen:


Delphi-Quellcode:
function RemoveBetween(const AsValue : string;const AOpenChar : char = '(';const ACloseChar : Char = ')') : string;

var
  iIndexIn : Integer;
  iIndexOut : Integer;
  iState : Integer;

begin
  SetLength(Result,Length(AsValue));
  iIndexIn := 1;
  iIndexOut := 0;
  iState := 1;
  while iIndexIn <= Length(AsValue) do begin
    case iState of
      1 : begin // Alles bis zum AOpenChar übernehmen
        if AsValue[iIndexIn] <> AOpenChar then begin
          Inc(iIndexOut);
          Result[iIndexOut] := AsValue[iIndexIn];
        end else begin
          iState := 2;
        end;
      end;
      2 : begin // Alles bis zum ACloseChar ignorieren
        if AsValue[iIndexIn] = ACloseChar then begin
          iState := 1;
        end;
      end;
    end;
    Inc(iIndexIn);
  end;
  SetLength(Result,iIndexOut);
end;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat