![]() |
AW: Punkte in Dateinamen ersetzen.
bitte gegf. anpassen
Delphi-Quellcode:
Function ReplaceAllWHatIDontWannaHave(const s:String):String; var i:Integer; IsInBreak:Boolean; Procedure Resultadd(c:Char); begin if not IsInBreak then Result := Result + c; end; begin IsInBreak := false; for I := 1 to LastDelimiter('.',s)-1 do begin if s[i] ='.' then ResultAdd(' ') else if s[i] ='(' then IsInBreak := true else if s[i] =')' then IsInBreak := False else ResultAdd(s[i]); end; Result := Result + ExtractFileExt(s); end; |
AW: Punkte in Dateinamen ersetzen.
Ok, PosEx war mir neu (ratet mal was ich fand, als ich grad bei Google danach suchte :shock:).
Also ermittel ich mit Pos erst ab wann das erste Mal '(' auftaucht. Mit PosEx dann das erste Auftauchen von ')' und für delete brauch ich dann noch den Pos Wert - den PosEx Wert, weil delete (laut google) nur Zeichenlängen übernimmt, keine Delemiter. Hab ich so richtig gedacht? Gruss, Andreas |
AW: Punkte in Dateinamen ersetzen.
Ne, nicht ganz richtig verstanden. Das erste Pos ermittelt eben die Position des ersten Zeichens. Das wäre dann in der Richtung :
Delphi-Quellcode:
Ende der Klammer :
Anfang := Pos (st,'(');
Delphi-Quellcode:
Alles zwischen den Klammern löschen :
Ende := Pos (st,')');
Delphi-Quellcode:
Wie gesagt : Besser F1 drücken, da steht sowieso alles ausführlich drin.
delete (st,Anfang, Ende);
|
AW: Punkte in Dateinamen ersetzen.
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; |
AW: Punkte in Dateinamen ersetzen.
Zitat:
Zitat:
Danke für die Hilfe jedenfalls :). Gruss, Andreas |
AW: Punkte in Dateinamen ersetzen.
Ja ja, ist schon klar. Man fragt einfach mal, bevor man selber mal guckt. :mrgreen:
Bei dem bisher angesprochenen gilt das hier aber nicht : Zitat:
|
AW: Punkte in Dateinamen ersetzen.
Zitat:
Zitat:
Übrigens, PosEx gab es in Delphi3 definitiv noch nicht :). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz