![]() |
String hochzählen
Hallo DPler,
im Prinzip weiß ich nicht, wie ich mein Problem in die richtigen Worte fassen soll, um dannach zu suchen, deshalb dieser Thread. Ich bekomme von einer Anwendung Dateien geliefert, diese Dateien importiere ich in eine Notes-Datenbank. Soweit ist das auch kein Problem. Aber jetzt kommts ... Auf einem FTP-Server liegen z.B. folgende Dateien: TAXASFCX.DAT TAXASFCY.DAT TAXASFCZ.DAT TAXASFDA.DAT TAXASFDB.DAT Pro stunde kommt eine Datei hinzu. So nun zu meinem Problem. Nehmen wir an, dass ich um 13 Uhr mit meinem Programm alle .DAT Dateien bis TAXASFCZ.DAT importier. Um 14 Uhr kommt wieder eine Datei hinzu. Also speicher ich in meinem Programm den Namen, der letzten importieren Datei. Wie kann ich jetzt überprüfen, wenn ich die Liste der Dateien im Verzeichnis durchgeh, ob der Eintrag größer als meine letzte Datei ist? Das Problem ist, dass ich a) alte Dateien im Verzeichnis nicht löschen kann und b) das Datum nicht benutzen kann, da es immer auf 1.1.70 gesetzt wird. Ich bin für jeden Denkanstoß dankbar!!! Grüße aus dem sonnigen Altrip :cheers: , Markus |
Re: String hochzählen
Du könntest dir ein Array of Char mit allen Buchstaben des Alphabets erstellen und den Buchstaben folgendermaßen ermitteln:
Buchstabe der letzten Datei: F Neuer Buchstabe: arrayChar[pos('F', arrayChar) +1]; Florian |
Re: String hochzählen
|
Re: String hochzählen
Delphi-Quellcode:
Nun brauchst du nur noch zu schauen ob die Datei mit dem nächsten logsichen Namen auf dem Server existiert. Das machst du so lange bis dies nicht der Fall ist. Natürlich speicherst du bei dieser Iteration den zuletzt benutzten Dateinamen global ab.
function NextFileName(const FileName: String): String;
var I: Integer; begin Result := ExtractFileName(FileName); for I := Length(Result) downto 1 do begin Result[I] := Char(Ord(Result[I]) + 1); if Result[I] <= 'Z' then Break; Result[I] := 'A'; end; Result := Result + '.DAT'; end; Gruß Hagen |
Re: String hochzählen
Danke für eure schnelle Hilfe, Hagen hat es auf den Punkt gebracht!
Danke. Funktioniert super!!! *Bitte closen* |
Re: String hochzählen
Zitat:
Meiner Meinung nach wird die Original-Extension verändert und eine neue angehängt. Mit dem folgenden Code sollte das nicht mehr passieren:
Delphi-Quellcode:
Gruß Hawkeye
function NextFileName(const FileName: String): String;
var I: Integer; begin Result := ChangeFileExt(ExtractFileName(FileName), ''); for I := Length(Result) downto 1 do begin Result[I] := Succ(Result[I]); if Result[I] <= 'Z' then Break; Result[I] := 'A'; end; Result := Result + '.DAT'; end; |
Re: String hochzählen
naja das ist bei deinem Code aber auch der Fall ;)
Delphi-Quellcode:
Gruß Hagen
function NextFileName(const FileName: String): String;
var I: Integer; Ext,Path: String; begin Ext := ExtractFileExt(FileName); Path := ExtractFilePath(FileName); Result := ChangeFileExt(ExtractFileName(FileName), ''); for I := Length(Result) downto 1 do begin Result[I] := Succ(Result[I]); // gute Idee if Result[I] <= 'Z' then Break; Result[I] := 'A'; end; Result := Path + Result + Ext; end; |
Re: String hochzählen
Ok, hier noch eine Version mit der FileName ein Dateiname mit Extenson und Pfad sein kann.
Delphi-Quellcode:
Gruß Hagen
function NextFileName(const FileName: String): String;
var I,J: Integer; begin Result := FileName; I := Length(Result); J := I; while (I > 0) and not (Result[I] in ['\', '/']) do begin if Result[I] = '.' then J := I -1; Dec(I); end; for J := J downto I +1 do begin Result[J] := Succ(Result[J]); if Result[J] <= 'Z' then Break; Result[J] := 'A'; end; end; |
Re: String hochzählen
Zitat:
Code:
Nur das wollte ich verhindern.
xyz.dat -> xyz.dau.dat -> xyz.dau.dau.dat -> ...
Gruß Hawkeye |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:16 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-2025 by Thomas Breitkreuz