Random dosya adı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
anlerduran
Üye
Mesajlar: 8
Kayıt: 09 Şub 2005 05:59

Random dosya adı

Mesaj gönderen anlerduran »

merhaba...
Forumda uzun zamandır dolaşıyorum fakat aklımdaki sorunun cevabını bulamadım..
Sorum şu:

bmp := Tbitmap.Create;
bmp.Width := Screen.Width;
bmp.Height := Screen.Height;
image1.Width := Screen.Width;
image1.Height := Screen.Height;

dc := GetWindowDc(GetDesktopWindow);
Bitblt(bmp.canvas.handle,0,0,Screen.Width,Screen.height,dc,0,0,srccopy);

image1.Canvas.Draw(0,0,bmp);
releasedc(getdesktopwindow,dc);
bmp.SaveToFile('c:\deneme.bmp');
bmp.Free;

bu tip bir kodla ekran görüntüsünü image'a ordanda görüldüğü gibi c:\deneme.bmp klasörüne kaydediyorum...bunu timer kontrolüyle her 5 dakikada bir yapıyorum..Buraya kadar hallettim ama sizinde aklına geliceği gibi her 5 dakikada yeni kayıt önceki deneme.bmp'nin üzerine kaydediyor...Yani bu dosya ismi için nasıl random bir değer kullanabilirim..Mesela ben şöle düşündüm.her kayıt öncesi sistem saatinind dakikasını alıp bunu dosya ismine eklerse her dosyanın ismi farklı olur..Ama işte bunu dosya ismine ne şekilde ekleyebileceğimi çözemedim..
Şimdiden teşekkürler,,,
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

Kod: Tümünü seç

function TForm1.GetFileName:string;
var
  yil, ay, gun, saat, dakika, saniye, salise : Word;
  path:string;
begin
 DecodeDateTime ( Now, yil, ay, gun, saat, dakika, saniye, salise);
 path:=JvComputerInfoEx1.Folders.DesktopDirectory;
 Result:= Format('%s\MyDesktop_%d_%d_%d_%d_%d_%d_%d.JPG',[path,gun,ay,yil,saat,dakika,saniye,salise]);
end;
masaüstü path ine kaydetmek için adres verir.
isterseniz path := kısmını değiştirin
.-.-.-.-.-.-.-. ^_^
anlerduran
Üye
Mesajlar: 8
Kayıt: 09 Şub 2005 05:59

Mesaj gönderen anlerduran »

saol mege..
yalnız

if w=300 then begin
bmp := Tbitmap.Create;
bmp.Width := Screen.Width;
bmp.Height := Screen.Height;
image1.Width := Screen.Width;
image1.Height := Screen.Height;

dc := GetWindowDc(GetDesktopWindow);
Bitblt(bmp.canvas.handle,0,0,Screen.Width,Screen.height,dc,0,0,srccopy);

image1.Canvas.Draw(0,0,bmp);
releasedc(getdesktopwindow,dc);
bmp.SaveToFile('c:\deneme.bmp');
bmp.Free;
if w=300 then w:=1

verdiğin kodu bu koda monte etmem mümkünmü?Bi fikir verebilirmisin..aynı şekilde c:\deneme ye .bmp uzantılı kaydedicek şekilde?
merginli
Üye
Mesajlar: 6
Kayıt: 19 Eyl 2003 09:02

Mesaj gönderen merginli »

Bu da dağişik bir yaklaşım. Genelde MS güncelleme dosyalarını hdd roota açarken galiba bu tip birşey kullanıyor.

Kod: Tümünü seç

function TForm1.DosyaAdi: String;
const
	Uzunluk = 5;
var
  i : integer;
  S : String;
begin
	repeat
  	S := '';
  	for i := 1 to Uzunluk do
    	S := S + Chr(Random(26)+65) + Chr(Random(26)+97);
 	until not FileExists(S);
 	Result := S + '.bmp';
end;
anlerduran yazdı: bmp.SaveToFile(DosyaAdi);
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Aslında temp file oluşturmak için bir Windows API mevcut. Örneklemek için bir function oluşturdum. Funct. geriye TEMP klasörünüzde prefix'iniz ile başlayan rastgele isimli bir dosya yaratıyor ve adını döndürüyor.

Kod: Tümünü seç

// Prefix'in ilk 3 karakteri dikkate alınır.
function GetTempFile(const APrefix: string = ''): string;
var
  TempPath: string;
  TempPathLength: Integer;
begin
  SetLength(TempPath, MAX_PATH);
  TempPathLength:= GetTempPath(MAX_PATH, PChar(TempPath));
  if TempPathLength = 0 then
    raise Exception.Create('Geçici dosya yolu alınamadı');
  // TempPath dönüşte null karakter eklenmemiş halde döner
  // TempPath boyutunu yeniden ayarlayalım
  SetLength(TempPath, TempPathLength);

  // Result boyutunu MAX_PATH yapalım
  SetLength(Result, MAX_PATH);

  // Geçici dosya oluşturulur.
  if GetTempFileName(PChar(TempPath), PChar(APrefix), 0, @Result[1]) = 0 then
    raise Exception.Create('Geçici dosya oluşturulamadı');

  Result:= string(PChar(Result));
end;
GetTempFile('TST') dediğinizde TEMP klasörünüz nereye tanımlıysa oraya TST0A22.TMP gibi bir dosya yaratacaktır ve ismini geri döndürecektir.
anlerduran
Üye
Mesajlar: 8
Kayıt: 09 Şub 2005 05:59

...

Mesaj gönderen anlerduran »

Yardımlarınız için teşekkür ederim...Şimdi deniyorum umarım işe yarar.
Cevapla