AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Grafik speichern und +1 benennen!?
Thema durchsuchen
Ansicht
Themen-Optionen

Grafik speichern und +1 benennen!?

Offene Frage von "woggly4"
Ein Thema von woggly4 · begonnen am 18. Aug 2007 · letzter Beitrag vom 18. Aug 2007
Antwort Antwort
woggly4

Registriert seit: 13. Jan 2007
11 Beiträge
 
#1

Grafik speichern und +1 benennen!?

  Alt 18. Aug 2007, 11:59
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?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Grafik speichern und +1 bennen!?

  Alt 18. Aug 2007, 12:02
Wo besteht genau das Problem:
Es gibt 2 Möglichkeiten du speicherst die höchste bzw. Nächste Zahl oder du ermittelst diese dynamisch.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von PigfaceJoe
PigfaceJoe

Registriert seit: 17. Dez 2006
Ort: Saarland
24 Beiträge
 
Delphi 7 Personal
 
#3

Re: Grafik speichern und +1 benennen!?

  Alt 18. Aug 2007, 12:05
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
Max
Glühlampen brennen heller, wenn man sie vor dem Einschrauben aus der Verpackung nimmt.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Grafik speichern und +1 benennen!?

  Alt 18. Aug 2007, 12:10
Zitat von PigfaceJoe:
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
Oder noch besser - wenn wir schon ein Object namens TForm1 etc. haben können wir auch im private die Variable declarieren - macht ja schließlich nicht viel sinn objectorientiert und global zu vermischen wenn es auch anders geht ohne Aufwand.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von PigfaceJoe
PigfaceJoe

Registriert seit: 17. Dez 2006
Ort: Saarland
24 Beiträge
 
Delphi 7 Personal
 
#5

Re: Grafik speichern und +1 benennen!?

  Alt 18. Aug 2007, 12:13
Hi,
Sry, aber ich hab in der Schule halt nur die Methode gelernt unter implementation , was genau ist denn da jetzt der Unterschied?
Max
Glühlampen brennen heller, wenn man sie vor dem Einschrauben aus der Verpackung nimmt.
  Mit Zitat antworten Zitat
Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#6

Re: Grafik speichern und +1 benennen!?

  Alt 18. Aug 2007, 12:13
Hallo woggly4,

hier ein bißchen Code zum Probieren:

Delphi-Quellcode:
// 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;
Die Funktion ist noch ein bißchen unflexibel, aber Du kannst sie ja entsprechend Deinen Wünschen anpassen.

mfg
eddy
  Mit Zitat antworten Zitat
woggly4

Registriert seit: 13. Jan 2007
11 Beiträge
 
#7

Re: Grafik speichern und +1 benennen!?

  Alt 18. Aug 2007, 12:39
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.

(Ich lass' das Thema noch als offene Frage, falls es nicht funktionieren sollte.)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#8

Re: Grafik speichern und +1 benennen!?

  Alt 18. Aug 2007, 13:29
Ich hätte auch noch einen Vorschlag:
Delphi-Quellcode:
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;
Aufrufen lässt sich das z.B. so:ShowMessage(GetNextFreeFileName('C:\001.txt'));
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 18:48 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