|
 | | |
| Autor | Správa |
ha2
 Užívateľ
 Založený: 21.12.2008 Príspevky: 114
 | Zaslal: So 23.01.10 15:46 |   |
Pripajam sa na server pomocou komponenty clientsocket. Potrebujem odchytit vynimku ked server nieje dostupny (vobec neexistuje). Je tam udalost onError, kde si dam napr.
| kód: | | memo1.lines.add('zly server'); |
ale aj tak vyhodi chybu o asyn. chybe. A to nechcem. skusal som pomocou try exception ale neviem to odstranit.
V skratke, chem upozornovat na chybu sam v aplikacii nie cez win chybove hlasenia. |
| |
  |
 |
Fico
 Skúsený užívateľ
 Založený: 11.01.2009 Príspevky: 1052
 | Zaslal: So 23.01.10 16:06 |   |
Pokiaľ viem, tak chyby od debuggeru vybehujú, iba pokiaľ program spúšťaš v debuggeri (teda keď ho ladíš, spúšťaš priamo v Delphi). Neviem, či si program skúšal spúšťať priamo z miesta na disku, kde bol vytvorený. Ak nie, tak to skús (čiže ho spusti mimo Delphi, ako obyčajnú aplikáciu) a ak chybovú správu aj tak zobrazí, tak skús toto:
| kód: | try
// problémové miesto v kóde
except
On E: Exception do memo1.lines.add('zly server');
end; |
|
| |
   |
 |
ha2
 Užívateľ
 Založený: 21.12.2008 Príspevky: 114
 | Zaslal: So 23.01.10 16:35 |   |
skusal som aj tento zapis predtym len asi neosetrujem spravny kod.
mam
| kód: | procedure TForm1.Button1Click(Sender: TObject);
begin
clientsocket1.Host:=server;
clientsocket1.Port:=port;
clientsocket1.active:=true;
end; |
dalej mam uz iba onconnect a onread. A ked osetrim button tak nic neodchyti
..a skusal som to aj mimo delphi samozrejme |
| |
  |
 |
Fico
 Skúsený užívateľ
 Založený: 11.01.2009 Príspevky: 1052
 | Zaslal: So 23.01.10 17:22 |   |
Tak to potom asi naozaj ošetruješ nesprávny kód. Skús dať blok try/except na všetky procedúry, čiže:
| kód: | procedure XXX;
begin
try
//telo procedury
except
on E: Exception do ShowMessage('1');
end;
end; |
s tým, že do ShowMessage daj vždy iné číslo, napr pre ButtonClick jdenotku, OnConnect dvojku a pre OnRead trojku. Potom budeš vedieť kde je chyba. Nie je to nejaký extra spôsob, ale keďže nemám tento komponent, nedokážem ti inakšie pomôcť. Môžeš sa ešte pozrieť na tento príklad a upraviť svoj kód podľa neho.
// Mimochodom, debugger ti nazastaví s kurzorom na mieste, kde je chyba? |
| |
   |
 |
ha2
 Užívateľ
 Založený: 21.12.2008 Príspevky: 114
 | Zaslal: So 23.01.10 22:47 |   |
nie debuger mi neskoci na riadok s chybou pretoze chyba nenastala v mojom kode ale v komponente. kedze sa napaja na neexistujuci server, alebo ak simulujem vypadok netu tak to hodi tiez error. Skusal som vsade osetrit + showmessage a je jak som predpokladal. Tu chybovu spravu vyvolava telo onError procedury
| kód: | procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
showmessage('onError');
end; |
sucasne s hlasenim o chybe nabehne sprava "onError". Je to procedura na urcenie co ma program robit pri chybe, to je pekne ale neviem prist nato ako to hlasenie odstranit, a okrem toho ten skaredy windowsacky "brmmmm" zvuk pri chybe
EDIT:
Vyriesene.
| kód: | procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
ErrorCode := 0;
end; |
strasne tazke .... ale napadne cloveka? |
| |
  |
 |
|
Nemôžete pridávať nové témy do tohto fóra. Nemôžete odpovedať na témy v tomto fóre. Nemôžete upravovať svoje príspevky v tomto fóre. Nemôžete mazať svoje príspevky v tomto fóre. Nemôžete hlasovať v tomto fóre.
|
| |