AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

String hochzählen

Ein Thema von Noteip · begonnen am 5. Sep 2006 · letzter Beitrag vom 5. Sep 2006
Antwort Antwort
Noteip

Registriert seit: 2. Feb 2006
Ort: Altrip
6 Beiträge
 
Turbo Delphi für Win32
 
#1

String hochzählen

  Alt 5. Sep 2006, 16:09
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 ,
Markus
Markus
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

Re: String hochzählen

  Alt 5. Sep 2006, 16:12
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
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: String hochzählen

  Alt 5. Sep 2006, 16:12
Hi

Wenn es darum geht zu gucken, ob 'B' größer ist als 'A' (als Beispiel), dann kannst du dafür Delphi-Referenz durchsuchenOrd() nehmen. Bist du bei 'Z' muss du eben mit Ord('A') vergleichen.

Wieder zurück auf den Buchstaben kannst du mittels Delphi-Referenz durchsuchenChr() kommen.

Ich hoffe, ich habe das richtig verstanden.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#4

Re: String hochzählen

  Alt 5. Sep 2006, 16:16
Delphi-Quellcode:
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] <= 'Zthen Break;
    Result[I] := 'A';
  end;
  Result := Result + '.DAT';
end;
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.

Gruß Hagen
  Mit Zitat antworten Zitat
Noteip

Registriert seit: 2. Feb 2006
Ort: Altrip
6 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: String hochzählen

  Alt 5. Sep 2006, 16:28
Danke für eure schnelle Hilfe, Hagen hat es auf den Punkt gebracht!

Danke.

Funktioniert super!!!

*Bitte closen*
Markus
gruß
Markus
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#6

Re: String hochzählen

  Alt 5. Sep 2006, 16:35
Zitat von Noteip:
Funktioniert super!!!
Wirklich?

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:
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] <= 'Zthen Break;
    Result[I] := 'A';
  end;
  Result := Result + '.DAT';
end;
Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#7

Re: String hochzählen

  Alt 5. Sep 2006, 16:52
naja das ist bei deinem Code aber auch der Fall

Delphi-Quellcode:
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] <= 'Zthen Break;
    Result[I] := 'A';
  end;
  Result := Path + Result + Ext;
end;
Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#8

Re: String hochzählen

  Alt 5. Sep 2006, 17:04
Ok, hier noch eine Version mit der FileName ein Dateiname mit Extenson und Pfad sein kann.

Delphi-Quellcode:
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] <= 'Zthen Break;
    Result[J] := 'A';
  end;
end;
Gruß Hagen
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#9

Re: String hochzählen

  Alt 5. Sep 2006, 17:13
Zitat von negaH:
naja das ist bei deinem Code aber auch der Fall
Nur zur Erklärung: mit "verändert" meinte ich folgendes:

Code:
xyz.dat -> xyz.dau.dat -> xyz.dau.dau.dat -> ...
Nur das wollte ich verhindern.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz