Grafik speichern und +1 benennen!?
Hallo, ich habe ein Problem!
Ich würde gerne ein Programm schreiben, mit dem ich per ButtonClick eine Grafik aus dem Internet (Adresse bleibt gleich) auf meiner Festplatte abspeichern kann. Besonderheit: Ich möchte, dass er die Grafik beim ersten Click 001.jpg nennt und beim zweiten 002.jpg. Halt, dass sich der Dateiname immer um einen (+1) erhöht. Kann mir jemand helfen? |
Re: Grafik speichern und +1 bennen!?
Wo besteht genau das Problem:
Es gibt 2 Möglichkeiten du speicherst die höchste bzw. Nächste Zahl oder du ermittelst diese dynamisch. |
Re: Grafik speichern und +1 benennen!?
Hi,
ganz einfach: Du deklarierst ne Variable global unter Implementation und setzt die anfangs auf 0 (ONCreate). Dann erhöhste die jedes mal , wenn die datei heruntergeladen wird... Gruss PigfaceJoe |
Re: Grafik speichern und +1 benennen!?
Zitat:
|
Re: Grafik speichern und +1 benennen!?
Hi,
Sry, aber ich hab in der Schule halt nur die Methode gelernt unter implementation , was genau ist denn da jetzt der Unterschied? |
Re: Grafik speichern und +1 benennen!?
Hallo woggly4,
hier ein bißchen Code zum Probieren:
Delphi-Quellcode:
Die Funktion ist noch ein bißchen unflexibel, aber Du kannst sie ja entsprechend Deinen Wünschen anpassen.
// liefert filename mit angehängter _nnnn (mit n=0,1,..,9)
// falls Quelldatei bereits auf eine Nummer _nnnn endet, wird diese bis auf die // nä. freie Nummer hochgezählt z.B. Test_0005.DB --> Test_0007.DB (falls Test_0006.DB bereits vorh. ist) function GetNextFileName(pfn : string) : string; var fpath, fn, fext, s, hs : string; i : integer; gefu : boolean; begin fpath := ExtractFilePath(pfn); s := ChangeFileExt(ExtractFileName(pfn), ''); gefu := copy(s,length(s)-4,1) = '_'; if gefu then begin for i := 3 downto 0 do begin gefu := gefu and (Pos(copy(s,length(s)-i,1), '0123456789') > 0); end; end; if gefu then begin hs := copy(s,length(s)-3,4); i := StrToInt(hs); fn := copy(s, 1, length(s) - 5); end else begin i := 0; fn := s; end; fext := ExtractFileExt(pfn); repeat inc(i); hs := IntToStr(i); while length(hs) < 4 do hs := '0' + hs; s := fn + '_' + hs + fext; until not FileExists(IncludeTrailingBackslash(fpath) + s); Result := s; end; mfg eddy |
Re: Grafik speichern und +1 benennen!?
Danke schonmal für die Hilfe, aber ich kann das jetzt leider nicht testen, weil mein Delphi gerade irgendwelche Probleme hat. Wenn es wieder funktioniert, werde ich mich da mal ransetzen. Danke. :thumb:
(Ich lass' das Thema noch als offene Frage, falls es nicht funktionieren sollte.) |
Re: Grafik speichern und +1 benennen!?
Ich hätte auch noch einen Vorschlag:
Delphi-Quellcode:
Aufrufen lässt sich das z.B. so:
function GetNextFreeFileName(const FileName: string;
const sFormat: string = '%.3d'): string; var i: integer; sPath, sExt: string; begin sPath := IncludeTrailingBackslash(ExtractFilePath(FileName)); sExt := ExtractFileExt(FileName); i := 0; repeat inc(i); Result := sPath + Format(sFormat,[i]) + sExt; until not FileExists(Result); end;
Delphi-Quellcode:
ShowMessage(GetNextFreeFileName('C:\001.txt'));
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:06 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