27. august 2001 - 14:22Der er
19 kommentarer og 3 løsninger
3 spørgsmål, async, bip, ...
Jeg har lige et par spørgsmål, deler point mellem dem der besvarer de forskellige spørgsmål...
1) Async error 10061 Denne kommer når jeg forbinder til en server der ikke er online (eller også er den ved at starte op, altså ingen forbindelse tilladt på det tidspunkt) Ved hjælp af on error (i ClientSocket events) ka\' jeg få den til at skrive at der er sket en fejl, men ikke stoppe den fra at komme med den fejl-dialogboks.. Hva\' skal jeg gøre for at forhindre den i af komme med den fejl-dialogboks, og kun gøre det jeg selv beder den om (f.eks. skrive et serveren ikke er tilgængelig i et editfelt eller noed)
2) biplyd ved enter Lille ting, bare irri at den siger bip når jeg taster enter i et editfelt, jeg har en if Key = VK_Return then Edit123.Setfocus; under KeyPress
3) fjerne fejlbesked ved forkert indtastning i editfelt. Her mener jeg at når jeg indtaster et/flere bogstaver i et editfelt og bruger det til at regne med.. altså som int .. ka\' man så ikke gøre noed i proceduren så den skriver at det er forkert format man indtaster, i stedet for en fejlboks... og jeg kender godt idéen med at bruge Val, men synes det er en klodset løsning.. Jeg så noed kode der virkede brugbart i et andet spørgsmål, noed med en except (så ikke lige hvilket spørgsmål det var, sorry) - men der kom den også med en af delphi\'s indbyggede fejl-dialogbokse... (at den ikke ku\' regne med strings)
Har overvejet det.. men ville gerne have af vide om det andet ka\' lade sig gøre... det er jeg ikke sikker på om det kan... hvis ikke så er der ikke noed at gøre ved det... men ville være rart :)
Ville være rart hvis man kunne sige at den skulle forbinde til sted1.com .. og hvis det så ikke virker så skulle den forbinde til sted2.com i stedet.. igen.. uden den async error..
Morten_S .. det du skrev vedr. 2 virkede ikke hos mig at least, ka\' du uddybe det ? (det var en inkomp. error i compileren)
Hvis du skal fange en StrToInt error kan du enten bruge en try..except eller du kan vælge at konvertere på en anden måde... Du kan bruge VAL den har en variable med som angiver om der var fejl, den er meget hurtigere en try except men kræver altså en extra var.
Din TCP/IP conn. er der vist ikke umidelbar noget at gøre ved, ( løsningen er at bruge WinAPI og selv lave din socket, en større historie ), så bruge try except til den.
Spm. 3 : rettelse. ... try MyNumber := StrToInt(Edit1.Text); except on EConvertError do begin Edit1.Text := \'\'; // Glemte at rydde den MessageDlg(\'Only numbers.\', mtError, [mbOK], 0); end; end; ...
Spm. 2 : Delphi forventer, at en eller anden knap, hvis Default property er sat til True (virker derfor kun for knapper), tager sig af dit <ENTER> tryk. Når det er en TEdit, der har fokus og ingen af dine knapper har Default sat til True, kommer der en fejlmelding - et bip. Jeg har \"snydt\" - jeg har lavet en knap, sat dens Default property til True og den bredde til 0 og nu får jeg ikke nogen bip.
Nåh, ja ... Edit123.SetFocus kaldet skal så flyttes til snydeknappens OnClick event - <ENTER> trykket bliver ikke opfattet som en karakter, der skal tilføjes til edit-box\'ens streng, når man har en Default knap
slowaterz .. det ser meget fornuftigt ud... jeg har dog kun lige haft et par minutter med delphi, så har ikke prøvet andet end den med socket.. men det er et klientprogram jeg har gang i, der når jeg connecter skal jeg da ikke andet end at smide ClientSocket.Active := true vel? Hvordan vender jeg det du skrev så det kommer til at passe med det?
Tjaeh ... I mit eksempel havde jeg \"Uses Psock;\", men det kan være, du skal bruge \"Uses scktcomp;\" - deri er der en exception, der hedder ESocketError - den passer måske bedre til din situation.
Jeg har uses scktcomp med, opdagede selv at jeg skulle ha\' den lavet om til ESocketError ... men ... den kommer stadig med den samme fejl som hele tiden....
\'Project Project1.exe raised exception class ESocketError with message \'Async. socket error 10049\'. Process stopped. Use step or... bla bla..
Du skal sætte delphi til IKKE at stoppe på Delphi Exception eller tilføje ESocketError i din Exclude liste, hvis du vil ungå din exception når du runner /Martin
Hvis du kører programmet fra Delphi, vil du få den exception fejl, men når du nu har skrevet en handler, vil der ikke komme fejl, når du kører programmet i Windows
sorry, har været lidt væk, har dog lige fået testet.. det virker sådan cirka.. :=)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.