Closefile --- incompatible types hatası

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
fatihekici
Üye
Mesajlar: 6
Kayıt: 30 Eyl 2007 11:26
Konum: DENİZLİ

Closefile --- incompatible types hatası

Mesaj gönderen fatihekici »

S.a.
Arkadaşlar delphi de yeniyim ve bişeyler yaparak öğrenmek istiyorum.

Kod: Tümünü seç

function IsFileInUse(FileName: TFileName): Boolean;
var
HFileRes: HFILE;
begin
Result := False;
if not FileExists(FileName) then Exit;
HFileRes := CreateFile(PChar(FileName),
GENERIC_READ or GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
Result := (HFileRes = INVALID_HANDLE_VALUE);
if not Result then
CloseHandle(HFileRes);
end;


procedure TForm1.FormCreate(Sender: TObject);
var
hbyst,hbyss,hbys_,s1,ak1,sn2:string;
d1:tregistry;
sn1:integer;
begin
  hbyst:='c:\hbys\bhbs.exe';
  hbys_:='C:\hbys\bhbs_.exe';
if isfileinuse(pchar(hbyst)) then
begin
  closefile(pchar(hbyst));
end else
    d1:=tregistry.Create;
    d1.RootKey:=HKEY_CURRENT_USER;
    ak1:='Software';
    d1.OpenKey(ak1,false);
    s1:=d1.readstring('Sunucu');
    d1.closekey;
  sn1:=ansipos('/',s1);
  sn2:=ansileftstr(s1,sn1-1);
  hbyss:='\\'+sn2+'\hbys\bhbs.exe';
renamefile(hbyst,hbys_);
  copyfile(pchar(hbyss),pchar(hbyst),false);
winexec(pchar(hbyst),sw_show);
if isfileinuse(pchar(hbyst)) then
begin
  application.terminate;
  exit;
end
else
  renamefile(hbys_,hbyst);
  winexec(pchar(hbyst), sw_show);
  application.terminate; exit;
end;
Bu kodu çalıştırdığım zaman

Kod: Tümünü seç

 closefile(pchar(hbyst));
satırında Incompatible types hatası alıyorum.


Eski çalışan kod

Kod: Tümünü seç

var
hbyst,hbyss,hbys_:string;
begin
hbyss:='\\server\hbys\bhbs.exe';
hbyst:='c:\hbys\bhbs.exe';
hbys_:='C:\hbys\bhbs_.exe';
closefile(pchar(hbyst));
renamefile(hbyst,hbys_);
copyfile(pchar(hbyss),pchar(hbyst),false);
winexec(pchar(hbyst),sw_show);

if isfileinuse(pchar(hbyst)) then
begin
application.terminate;
exit; end
else
renamefile(hbys_,hbyst);
winexec(pchar(hbyst), sw_show);
application.terminate; exit;
end;
Sadece eğer dosya kullanımdaysa ve registry den ana makina adını aldırıyorum. Değişken tiplerinde de oynama yapmadım ama hatanın sebebini bulamadım.

Merak eden arkadaşlar olursa. Bu program başka bi programın içine gömülü. Diğer program yeni sürümü olup olmadığını kontrol ediyor. Varsa kendini kapatırken bu kodu tetikliyor. Çok basit kendi kendini güncelleyen program yapmaya çalıştım eğer eksiklikleri konusunda veya yapılabilecek daha güzel bir çalışma varsa fikirlerinizi yazarsanız sevinirim
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Amerikayı yeniden keşfetmeye gerek yok, aşağıdaki makale işinizi görecektir :idea:
viewtopic.php?t=21175
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
fatihekici
Üye
Mesajlar: 6
Kayıt: 30 Eyl 2007 11:26
Konum: DENİZLİ

Mesaj gönderen fatihekici »

Cevabınız için teşekkürler ama amacımıda baştan belirtmiştim aslında.

Bişeyler yaparken öğrenmekte istiyorum. Güncelleme yaptığım sistem ftp sitesi değil yerel ağdaki sunucu bilgisayar. Şu an verilen kodları yerel ağa uyarlayamam ve hangi satırın ne sebeple yazıldığını anlayamam. Zaten forma eklenen bileşenlerde yerel ağ için uygun değil sanırım.
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

fatihekici yazdı:Cevabınız için teşekkürler ama amacımıda baştan belirtmiştim aslında.

Bişeyler yaparken öğrenmekte istiyorum. Güncelleme yaptığım sistem ftp sitesi değil yerel ağdaki sunucu bilgisayar. Şu an verilen kodları yerel ağa uyarlayamam ve hangi satırın ne sebeple yazıldığını anlayamam. Zaten forma eklenen bileşenlerde yerel ağ için uygun değil sanırım.


Merhaba
sanırım daha önce buraya göndermiştim ağdan HTTP ile dosya indirmeyi. urlmon unitinde hazır prosedür var. şimdi zaman yok ama uygun zamanda örnek kod atılabilir.

Ancak baktığım kadarı ile Muharrem hocamın kodları gayet güzel.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Cevapla