Entwickler-Ecke
Windows API - Dateien ausfindig machen
Hybrid - So 22.02.04 20:25
Titel: Dateien ausfindig machen
Hi erstmal.
Ich hab da ein Problem mit einem Script zum speichern von Screenshots.
Das Script speichert die Screenshots als card#.bmp, wobei # für eine Zahl, die beim programmstart auf 0 gesetzt wird, steht und die bei jedem speichern um 1 erhöht wird.
Mein Problem ist, dass mein Prog, im Verzeichniss (welches mit der Variable "selected" angegeben wird) wo die Bilder gespeichert werden, nachschaun muss, ob ein Bild mit dem Namen card#.bmp vorhanden und welche zahl für # eingetragen ist.
Und bitte schlagt mir nicht vor, die Zahl in einer ini-Datei zu speichern, da ich die dann entweder in jedes, zum speichern ausgewählte Verzeichniss schreiben müsste, oder in einer ini-Datei alle Pfade mit Zahlen speichern müsste.
Achja, das müsste dann auch so funktionieren, dass wenn folgende Dateien vorhanden sind,
card1.bmp
card2.bmp
card3.bmp
card5.bmp
das Prog beim Speichern als card4.bmp speichert und beim nächsten Mal als card6.bmp.
mfg Andreas S.
alias Hybrid
Michael Stenzel - So 22.02.04 23:33
Hi Hybrid.
Folgende Funktion sollte Dir weiterhelfen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| function GetNextFileName(Dir : string) : string; var i : integer; begin if (Length(Dir)>0) and (System.Copy(Dir,1,1) <>'\') then Dir := Dir + '\'; i := 0; While FileExists(Format('%sCard%d.bmp',[Dir,i])) do; Result := Format('%sCard%d.bmp',[Dir,i]); end; |
mfg.
Michael.
Hybrid - Mo 23.02.04 11:22
Leider klappt das noch nicht ganz. Das script lässt das programm immer hängen bleiben, weil es die datei creature0.bmp überschreiben will.
Hier ist mal daqs script:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51:
| var Form1: TForm1; selected,selected2:string; zahl1,zahl2:integer;
[.........]
function GetNextFileNameC(Dir : string) : string; begin if (Length(Dir)>0) and (System.Copy(Dir,1,1) <>'\') then Dir := Dir + '\'; While FileExists(Format('%sCreature%d.bmp',[Dir,zahl1])) do; Result := Format('%sCreature%d.bmp',[Dir,zahl1]); end;
[.........]
procedure TForm1.FormCreate(Sender: TObject); begin selected:=ExtractFilePath(ParamStr(0)); zahl1:=0; end;
[.........]
procedure TForm1.Button3Click(Sender: TObject); var Bmp: TBitmap; begin timer1.Enabled:=false; Bmp := TBitmap.Create; try FormularScreenShot(Bmp, panel1.Handle);
if selected='' then bmp.SaveToFile(GetNextFileNameC(ExtractFilePath(ParamStr(0)))) else bmp.SaveToFile(GetNextFileNameC(selected)); zahl1:=zahl1+1;
finally Bmp.Free; end;
timer1.Enabled:=true; end; |
Anonymous - Mo 23.02.04 11:38
Das gibt ne endlosschleife, wenn die datei Creature0 existiert:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| function GetNextFileName(Dir : string) : string; var i : integer; begin if Dir[length(dir)] <> '\' then Dir := Dir + '\'; i := 0; while FileExists(Format('%sCreature%d.bmp',[Dir,i])) do inc(i); Result := Format('%sCreature%d.bmp',[Dir,i]); end; |
Hybrid - Mo 23.02.04 12:49
Danke an euch, jetzt ist es perfekt und funzt :D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!