24. februar 2005 - 15:05Der er
19 kommentarer og 1 løsning
Runtime error '521' Can't open clipboard
Hey allesammen Jeg sidder og roder med et chatprogram. I mit chatprogram har jeg en funktion som rstatter :) med et lille gif billede. Mit problem er egnetlig kun når jeg skal teste programmet. altså når jeg kører 2 "instances" af programmet på samme maskine. Min kode kopierer billedet ind i clipboar og indsætter det derefter i chat vinduet. Men når jeg kører 2 versioner så når det første program ikke at frigive adgangen til clipboard før at det andet prøver at åbne clipboard. Det jeg skal bruge er en "error-trap" som kommer op med en retry knap hvis fejl 521 optræder i programmet. Jeg skal samtidig bruge en lille guide til hvor denne kode skal sætte ind.
Jeg er indtil videre kommet frem til hvordan jeg laver min popup besked men ved ikke lige hvad mere jeg skal gøre ved den? eller om den egnentlig er rigtig nok?
If Err.Number = 521 then strMsg = MsgBox("Clipboard er optaget! Prøv igen?", _ vbRetryCancel + vbInformation, "Clipboard optaget") End if
eller hvor mener du jeg skal indsætte: If Err.Number = 521 then strMsg = MsgBox("Clipboard er optaget! Prøv igen?", _ vbRetryCancel + vbInformation, "Clipboard optaget") End if ?
"On Error Resume Next" fortæller programmet, at den skal fortsætte ("Resume Next"), selvom der er fejl. Det skal bare stå i toppen af dine subs/functions.
Du kan også få den til at hoppe ned, til en speciel "Error Handler"-rutine:
On Error GoTo MinErrorHandler
' din almindelige kode her ' din almindelige kode her ' din almindelige kode her ' din almindelige kode her ' din almindelige kode her
exit sub ' eller exit function MinErrorHandler:
If Err.Number = 521 then ' skriv noget og hop ud af sub/function End if
--
Du kan også gøre sådan her:
On Error Resume next
' din almindelige kode her ' din almindelige kode her
If Err.Number = 521 then
' der er opstået en fejl, med koden 521, ' hvilket betyder at den IKKE skal udføre din kode
Linien "if strMsg = EnBestemtVærdi then Goto SaetData" tester værdien af strMsg, dvs, hvilken knap (Ja/Nej/OK/Cancel) der er trykket.. hvis den er Ja/OK, hopper den over til SaetData-label/etikette, og udfør ClipBoard-koden igen..
Jeg mener at "Ja" er kode 7.. ellers er det kode 6.. kan ikke lige huske det.. Og husker ikke lige om "then Goto SaetData"-delen er korrekt.
min kode er lidt lang.. da den looper gennenm flere smiley tegn: ----------------------------------------------------------------------------- For i = 0 To imgIcon.Count - 1 CharCombo = Split(imgIcon(i).Tag, " ")
lImagePos = InStr(lImagePos, txtIn.Text, CharCombo(iCC)) Wend Next iCC Next i -----------------------------------------------------------------------------
Jeg har fået indsat det første det der on error resume next osv. Men den popper ikke op med en retry boks. Tilgengæld laver den den fejl at hvis jeg skrive fra 1 vindue hele tiden så viser den kun hver anden smiley i det vindue ejg skriver fra.. hvor den viser alle smileys i den som modtager.. hvis du forstår?
heh.. har lige et spørgsmål.. Hvordan sætter jeg den den kode ind i en sub? og hvordan kalder jeg den?
Skal den hedde f.eks.:
Function ReplaceImages() eller Sub ReplaceImages() eller hvordan?
Og hvordan kalder jeg den? bare ved at indsætte? Call ReplaceImages ? Grunden til jeg spørger er fordi at jeg ikke helt kan få den til at lave smileys nu :(
SaetData: ' Hvis Err.Number hele tiden er 512, vil den blive ved med at loope.. ' Jeg ved ikke om man kan "nulstille" Err.Number, men her er et forsøg: Err.Number = 0 ' hvis dette giver fejl, kommenter/fjern linien.
strMsg = MsgBox("Clipboard er optaget! Prøv igen?", vbRetryCancel + vbInformation, "Clipboard optaget") ' 4 = retry, 2 = cancel if strMsg = 4 then Clipboard.SetData img if Err.Msg = 512 then GoTo SaetData
hmm.. Du må undskylde at jeg ikke lige har svaret så hurtigt her til sidst.. har roddet en del med det.. og nu har jeg fået det til at virke.. :) Fik lidt hjælp udefra.. men læg lige et svar for noget en del af det du skrev kunne jeg bruge :)
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.