![]() |
Datei umbenennen, pfad einlesen!
Hey,
folgendes: 1. Ich möchte ein Zielverzeichnis in ein edit feld eingeben, und dann meinen Screenshot in diesen Pfad speichern! Wie mach ich das! Wie man einen Screenshot macht weiß ich. 2. Ich möchte diesen Screenshot umbenennen bevor er gespeichert wird! mfg |
Re: Datei umbenennen, pfad einlesen!
Zitat:
|
Re: Datei umbenennen, pfad einlesen!
Bischen blöd formuliert!
|
Re: Datei umbenennen, pfad einlesen!
Wie machst du denn den Screenshot?
Weil ich verstehe nicht,was du da umbenennen willst. TEdit + 'nen Button + TSaveDialog und schon kannst du da ein Verzeichnis auswählen. (damit kann man sich sowas basten, wie diese Upload-Eingabefelter auf Webseiten) |
Re: Datei umbenennen, pfad einlesen!
Delphi-Quellcode:
procedure ScreenToFile(aFileName: string);
var Bitmap: TBitmap; Canvas: TCanvas; begin Canvas := TCanvas.Create; try Canvas.Handle := GetWindowDC(0); try Bitmap := TBitmap.Create; try Bitmap.Width := Screen.DesktopWidth; Bitmap.Height:= Screen.DesktopHeight; Bitmap.PixelFormat := pfDevice; BitBlt(Bitmap.Canvas.Handle, 0, 0, Pred(Screen.DesktopWidth), Pred( Screen.DesktopHeight), Canvas.Handle, Screen.DesktopLeft, Screen.DesktopTop, Bitmap.Canvas.CopyMode); Bitmap.SaveToFile(aFileName); finally Bitmap.Free; end; finally ReleaseDC(0, Canvas.Handle); end; finally Canvas.Free; end; end; begin anzahl:=strtoint(e_anzahl.Text); ziel:=e_ziel.Text; i:=0; repeat begin i:=i+1; screentofile('ziel'); end; until i = anzahl; |
Re: Datei umbenennen, pfad einlesen!
Ändere doch einfach den eingelesenen Text des Pfad-Edits oder was ist genau dein Problem?
|
Re: Datei umbenennen, pfad einlesen!
Ich glaub ich steh voll auf em Schlauch!
Ich les ja dan pfad ein, der kommt in die var ziel. Dann möchte ich dass die datei benannt wird, und mit screentofile an dieses Ziel gespeichert wird! |
Re: Datei umbenennen, pfad einlesen!
Hey,
also wenn ich dich richtig verstanden habe (bin mir da nicht ganz sicher), dann mach doch folgendes:
Delphi-Quellcode:
(ungetestet)
var anzahl : integer;
var ordner, pfad : integer; begin anzahl := strtoint(e_anzahl.Text); ordner := IncludeTrailingPathDelimiter(e_ziel.Text); i:=0; // repeat inc(i); // erhöht i um 1 pfad := ordner + 'screenshot' + IntToStr(i) + '.bmp'; // screentofile(pfad); until i = anzahl; Vielleicht hilft dir das. Bei Fragen darfst du sie gerne stellen ;-) |
Re: Datei umbenennen, pfad einlesen!
Bin eine rauchen gegangen und dann is es mir eingefallen wie es geht!
Trotzdem danke! Mfg |
Re: Datei umbenennen, pfad einlesen!
Das gibt aber eine böse Schleife und die Screenshots sind vermutlich weitestgehend identisch. ;)
Ich habe noch gar nicht verstanden, was gemacht werden soll. Mit den Pfad-Funktionen kannst du die deinen Dateinamen in einem Pfad ändern lassen:
Delphi-Quellcode:
Natürlich geht's auch kürzer und evtl. auch auf ganz anderem Weg:
function ChangeFilename(Path: string; NewFilename: string): string;
var FileExtension: string; FilePath: string; begin FilePath := ExtractFilePath(Path); FileExtension := ExtractFileExt(Path); Result := FilePath + NewFilename + FileExtension; end;
Delphi-Quellcode:
Sonst schaue dir einfach mal folgende Funktionen an, dann klappt das schon:
function ChangeFilename(Path: string; NewFilename: string): string;
begin Result := ExtractFilePath(Path) + NewFilename + ExtractFileExt(Path); end; ![]() ![]() ![]() ![]() evtl. auch ![]() Wobei ChangeFileExt keine allzu gute Funktion ist bzw. nur bedingt funktioniert. Grüße, Matze Edit: Gut, dann hat sich das Thema ja erledigt. Wobei rauchen nicht so sinnvoll ist (ist ein anderes Thema :mrgreen: ). *stolzer Nichtraucher ist* |
Re: Datei umbenennen, pfad einlesen!
Zitat:
Delphi-Quellcode:
benutzen ;-)
until i >= anzahl;
Zu dem Problem mit den gleichen Screenshots: Einfach ein Sleep; bei jedem Schleifen-Durchgang verwenden und schon werden die Screenshots in zeitlichem Abstand gemacht ;-) mfg |
Re: Datei umbenennen, pfad einlesen!
wie genau mach ich des mit sleep??
|
Re: Datei umbenennen, pfad einlesen!
|
Re: Datei umbenennen, pfad einlesen!
Du könntest es so machen:
Delphi-Quellcode:
Dabei musst du allerdings bedenken, dass dein Programm dann "eingefroren" ist. Während der Schleife kannst du dein Programm somit nicht mehr ansprechen.
repeat
inc(i); // erhöht i um 1 pfad := ordner + 'screenshot' + IntToStr(i) + '.bmp'; // screentofile(pfad); // Sleep(100); // Die Zahl in der Klammer gibt die Zeit im ms an, die gewartet werden soll until i = anzahl; Edit: Da war ich wohl zu langsam, aber wo bitteschön war der rote Kasten... :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:57 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