Tutil !!
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Tutil !!
Arkadaşlar bir button yardımı ile Tutil32.exe yi çalıştırıyorum fakat programdaki Table1 ve Table2 nin kapatılması gerekiyor işlem yapması için bunu nasıl çözeblirim aşağıda ki kod çalışıyor buraya ekleme yaparak halledebilirmiyim birde programa geri dönüldüğünde program Table1 ve Table2 açık olarak çalışmasına devam etmeli. Yardım ederseniz çok sevinirim herkese teşekkürler.
procedure TForm3.BitBtn7Click(Sender: TObject);
begin
if Application.MessageBox('Programda Index hatası, düzenleme yapmak için çalıştırılması gerekir.Bu işlemi Onaylıyormusunuz ?','UYARI',
Mb_YesNo+Mb_IconQuestion) = 6 then
WINEXEC('C:\PUNTASWIN\TUTIL32.EXE',SW_SHOW)
else Showmessage('İşlemi iptal ettiniz program çalışmaya devam edecektir.Kolay Gelsin');
end;
procedure TForm3.BitBtn7Click(Sender: TObject);
begin
if Application.MessageBox('Programda Index hatası, düzenleme yapmak için çalıştırılması gerekir.Bu işlemi Onaylıyormusunuz ?','UYARI',
Mb_YesNo+Mb_IconQuestion) = 6 then
WINEXEC('C:\PUNTASWIN\TUTIL32.EXE',SW_SHOW)
else Showmessage('İşlemi iptal ettiniz program çalışmaya devam edecektir.Kolay Gelsin');
end;
- kadirkurtoglu
- Üye
- Mesajlar: 748
- Kayıt: 22 May 2005 01:20
- Konum: Uzakta Görünen Tepeden...
merhaba. anladığım kadarıyla mesajla vt ye bakım yaptıracaksın bı sırada da açık olan tabloların kapatılması gerekiyor. bunu için table nin olduğu formun onactive ve ondeactive eventlerine yazabilirisn. yani form dan bakım programını çalıştırdığında senin çalıştığın form deactive olacaktır. dolayısıyla buraya table1.close active olayınada tekrar table1.open ile işini halledersin. kolay gelsin..
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.
Mevlana
OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
ışığında hiç bir şey kaybetmez.
Mevlana
OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
procedure TForm3.BitBtn7Click(Sender: TObject);
begin
if Application.MessageBox('Programda Index hatası, düzenleme yapmak için çalıştırılması gerekir.Bu işlemi Onaylıyormusunuz ?','UYARI',
Mb_YesNo+Mb_IconQuestion) = 6 then
Form8.Table1.close;
Form7.Table1.close;
WINEXEC('C:\PUNTASWIN\TUTIL32.EXE',SW_SHOW)
else Showmessage('İşlemi iptal ettiniz program çalışmaya devam edecektir.Kolay Gelsin');
end;
bu şekilde yazdığım zaman Else de hata veriyor.
begin
if Application.MessageBox('Programda Index hatası, düzenleme yapmak için çalıştırılması gerekir.Bu işlemi Onaylıyormusunuz ?','UYARI',
Mb_YesNo+Mb_IconQuestion) = 6 then
Form8.Table1.close;
Form7.Table1.close;
WINEXEC('C:\PUNTASWIN\TUTIL32.EXE',SW_SHOW)
else Showmessage('İşlemi iptal ettiniz program çalışmaya devam edecektir.Kolay Gelsin');
end;
bu şekilde yazdığım zaman Else de hata veriyor.
- kadirkurtoglu
- Üye
- Mesajlar: 748
- Kayıt: 22 May 2005 01:20
- Konum: Uzakta Görünen Tepeden...
kardeş yukarıda mantık olarak yazdım. formun onactive ve ondeactive eventleri vardır bu evenlere yazarsan. problemin düzelir.
Kod: Tümünü seç
procedure TForm1.FormActivate(Sender: TObject);
begin
Table1.Open;
Table2.Open;
end;
procedure TForm1.FormDeactivate(Sender: TObject);
begin
Table1.Close;
Table2.Close;
end;
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.
Mevlana
OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
ışığında hiç bir şey kaybetmez.
Mevlana
OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
Selam.
@kadirkurtoglu
- Soruda geçen bir button aracılığıyla bu işlemin yapıldığı, bir form açılıyor da bu işlem yapılıyor olsaydı dediğiniz şekilde gerçekleşmesi mümkündü.
@ozcank
- Çözüm için yazmıyorum aradaki else hatası için yazıyorum...
- Then'den sonra begin..end şeklinde bir blok açmazsanız sadece ilk satır işleme alınır.
- Şimdi çözüm için yazıyorum WinExec ile dos uygulaması çalıştırdığınızda, bu çalıştırdığınız programın işlemesinin sona ermesi beklenmez... Bunun için aşağıdaki fonksiyonu veya benzerini kullanın...
- Kullanımı benzer.
@kadirkurtoglu
- Soruda geçen bir button aracılığıyla bu işlemin yapıldığı, bir form açılıyor da bu işlem yapılıyor olsaydı dediğiniz şekilde gerçekleşmesi mümkündü.
@ozcank
- Çözüm için yazmıyorum aradaki else hatası için yazıyorum...
- Then'den sonra begin..end şeklinde bir blok açmazsanız sadece ilk satır işleme alınır.
Kod: Tümünü seç
procedure TForm3.BitBtn7Click(Sender: TObject);
begin
if Application.MessageBox('Programda Index hatası, düzenleme yapmak için çalıştırılması gerekir.Bu işlemi Onaylıyormusunuz ?','UYARI',
Mb_YesNo+Mb_IconQuestion) = 6 then
begin
Form8.Table1.close;
Form7.Table1.close;
WINEXEC('C:\PUNTASWIN\TUTIL32.EXE',SW_SHOW);
end
else Showmessage('İşlemi iptal ettiniz program çalışmaya devam edecektir.Kolay Gelsin');
end;
- Kullanımı benzer.
Kod: Tümünü seç
CreateProcessAndWait('C:\PUNTASWIN\TUTIL32.EXE', '', SW_SHOW);
Kod: Tümünü seç
function CreateProcessAndWait(AppPath, AppParams: String; Visibility: word): DWord;
var
SI: TStartupInfo;
PI: TProcessInformation;
Proc: THandle;
begin
FillChar(SI, SizeOf(SI), 0);
SI.cb := SizeOf(SI);
SI.wShowWindow := Visibility;
if not CreateProcess(PChar(AppPath), PChar(AppParams), Nil, Nil, False,
Normal_Priority_Class, Nil, Nil, SI, PI) then
raise Exception.CreateFmt('Failed to execute program. Error Code %d',
[GetLastError]);
Proc := PI.hProcess;
CloseHandle(PI.hThread);
if WaitForSingleObject(Proc, Infinite) <> Wait_Failed then
GetExitCodeProcess(Proc, Result);
CloseHandle(Proc);
end;
- kadirkurtoglu
- Üye
- Mesajlar: 748
- Kayıt: 22 May 2005 01:20
- Konum: Uzakta Görünen Tepeden...
merhaba
@mrmcop demişki
hocam bu tutil32.exe yukarıda show ediliyor ve burda sanırım bizim formumuz deactive oluyor. çünkü tutil32.exe aktif hale geliyor. butona tıklanarak yapıldığını biliyorum.
@mrmcop demişki
Soruda geçen bir button aracılığıyla bu işlemin yapıldığı, bir form açılıyor da bu işlem yapılıyor olsaydı dediğiniz şekilde gerçekleşmesi mümkündü.
Kod: Tümünü seç
WINEXEC('C:\PUNTASWIN\TUTIL32.EXE',SW_SHOW);
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.
Mevlana
OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
ışığında hiç bir şey kaybetmez.
Mevlana
OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
index hatasımı var viewtopic.php?p=17818#17818
bde ile tUtile gerek kalmadan düzeltilir viewtopic.php?p=9904#9904
bde ile tUtile gerek kalmadan düzeltilir viewtopic.php?p=9904#9904
.-.-.-.-.-.-.-. ^_^
-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08
Bu şekilde Tutil32.exe calıştı fakat işlem bittikten sonra geri dönüşte
Form8.Table1.Open;
Form8.Table1.Open; nasıl yapabilirim?
begin
if Application.MessageBox('Programda Index hatası, düzenleme yapmak için çalıştırılması gerekir.Bu işlemi Onaylıyormusunuz ?','UYARI',
Mb_YesNo+Mb_IconQuestion) = 6 then
begin
Form8.Table1.close;
Form7.Table1.close;
WINEXEC('C:\PUNTASWIN\TUTIL32.EXE',SW_SHOW);
end
else Showmessage('İşlemi iptal ettiniz program çalışmaya devam edecektir.Kolay Gelsin');
end;
Form8.Table1.Open;
Form8.Table1.Open; nasıl yapabilirim?
begin
if Application.MessageBox('Programda Index hatası, düzenleme yapmak için çalıştırılması gerekir.Bu işlemi Onaylıyormusunuz ?','UYARI',
Mb_YesNo+Mb_IconQuestion) = 6 then
begin
Form8.Table1.close;
Form7.Table1.close;
WINEXEC('C:\PUNTASWIN\TUTIL32.EXE',SW_SHOW);
end
else Showmessage('İşlemi iptal ettiniz program çalışmaya devam edecektir.Kolay Gelsin');
end;
- Mesajda bahsetmeye çalıştığım konu buydu... TUtil işlemini bitirene kadar projenin beklemede kalmasını sağlamak gerekiyor. WinExec ile bunu yapamazsınız. Programı çalıştırır ve hemen bir alttaki satırdan yoluna devam eder.
- Sizin yapacağınız, WinEXEC ile çalıştırdığınız bu programı takibe alıp bittiğini tespit ettiğinizde kaldığınız yerden devam etmesini sağlamalısınız..
- Bunu yapan tek fonksiyon olmasa da başarılı bulduğum olan CreateProcessAndWait fonksiyonunudur.
- Yani şu...
- Sizin yapacağınız, WinEXEC ile çalıştırdığınız bu programı takibe alıp bittiğini tespit ettiğinizde kaldığınız yerden devam etmesini sağlamalısınız..
- Bunu yapan tek fonksiyon olmasa da başarılı bulduğum olan CreateProcessAndWait fonksiyonunudur.
- Yani şu...
Kod: Tümünü seç
function CreateProcessAndWait(AppPath, AppParams: String; Visibility: word): DWord;
var
SI: TStartupInfo;
PI: TProcessInformation;
Proc: THandle;
begin
FillChar(SI, SizeOf(SI), 0);
SI.cb := SizeOf(SI);
SI.wShowWindow := Visibility;
if not CreateProcess(PChar(AppPath), PChar(AppParams), Nil, Nil, False,
Normal_Priority_Class, Nil, Nil, SI, PI) then
raise Exception.CreateFmt('Failed to execute program. Error Code %d',
[GetLastError]);
Proc := PI.hProcess;
CloseHandle(PI.hThread);
if WaitForSingleObject(Proc, Infinite) <> Wait_Failed then
GetExitCodeProcess(Proc, Result);
CloseHandle(Proc);
end;
procedure TForm3.BitBtn7Click(Sender: TObject);
begin
if Application.MessageBox('Programda Index hatası, düzenleme yapmak için çalıştırılması gerekir.Bu işlemi Onaylıyormusunuz ?','UYARI',
Mb_YesNo+Mb_IconQuestion) = 6 then
begin
Form8.Table1.close;
Form7.Table1.close;
CreateProcessAndWait('C:\PUNTASWIN\TUTIL32.EXE', '', SW_SHOW);
Form8.Table1.Open;
Form7.Table1.Open;
end
else Showmessage('İşlemi iptal ettiniz program çalışmaya devam edecektir.Kolay Gelsin');
end;