Avatar billede kattendk Nybegynder
24. november 2008 - 09:58 Der er 8 kommentarer og
2 løsninger

Problemer med anti flood til IRC.

public bool tjekflood(string auth)
        {
            int num = 0;
            if (fIni.Readini("flood", auth).Length > 0)
            {
                num = Convert.ToInt32(fIni.Readini("flood", auth));
            }
            if (Convert.ToInt32(ctime()) >= num)
            {
                fIni.RemoveItem("flood", auth);
            }
            return (fIni.Readini("flood", auth).Length > 0);
        }

Jeg får føglende fejl: System.OverflowException: Value was either too large or too small for an Int32

Fejlen kommer af denne linje: num = Convert.ToInt32(fIni.Readini("flood", auth));

Det skal siges, hvis filen ikke indholder authet, så skriver den nye ctime ind. Men lige så snart man står i flood.ini
[flood]
auth=ctime

Så kommer den med den fejl der, og jeg kan umiddelbart ikke lige gætte mig til rettelsen :\
Jeg tjekker via: !tjekflood(auth)
Og står man ikke i tjekflood, så skriver den personens auth i flood.ini via denne:
fIni.Writeini("flood", auth, 5 + Convert.ToInt32(ctime()).ToString());

Håber det er til at forstå :-)
Avatar billede d0t Nybegynder
24. november 2008 - 11:48 #1
Ved ikke helt hvad du mener, og fejlen kan sagtens ligge et andet sted, men har du prøvet løsningen lige til højrebenet?

At bruge Int64 istedet? :)
Avatar billede kattendk Nybegynder
24. november 2008 - 11:59 #2
Error    1    Cannot implicitly convert type 'long' to 'int'. An explicit conversion exists (are you missing a cast?)

Den fejl får jeg hvis jeg skifter 32 ud med 64.
Avatar billede kattendk Nybegynder
24. november 2008 - 15:16 #3
Ctime er på 51227531391, hvis det har noget at sige..
Avatar billede d0t Nybegynder
24. november 2008 - 22:27 #4
public bool tjekflood(string auth)
        {
            Int64 num = 0;
            if (fIni.Readini("flood", auth).Length > 0)
            {
                num = Convert.ToInt64(fIni.Readini("flood", auth));
            }
            if (Convert.ToInt64(ctime()) >= num)
            {
                fIni.RemoveItem("flood", auth);
            }
            return (fIni.Readini("flood", auth).Length > 0);
        }


Giver det den fejl du skriver?
Avatar billede kattendk Nybegynder
25. november 2008 - 08:08 #5
Nej det giver ikke fejl.

Dog virker det ikke som det skal, da jeg kun kan bruge commandoen én gang. Den sletter ikke indholdet hvis Convert.ToInt64(ctime()) >= num?
Avatar billede d0t Nybegynder
25. november 2008 - 12:50 #6
Prøv at debugge igennem koden, og så se hvilke værdier dine variabler har..
Kan være der er en anden fejl til at

fIni.RemoveItem("flood", auth);

Ikke fjerner indholdet,

for resten af kode ser fornuftig nok ud..

Ellers så smid hele koden ind :)
Avatar billede kattendk Nybegynder
25. november 2008 - 13:48 #7
Den fjerner ikke indholdet, men et andet sted jeg bruger removeitem, der virker den fint.
Avatar billede kattendk Nybegynder
26. november 2008 - 14:30 #8
Fandt ud af det var den her, fIni.Writeini("flood", auth, 5 + Convert.ToInt32(ctime()).ToString()); der var fejlen.

Den skal se sådan ud:

fIni.Writeini("flood", auth,Convert.ToInt32(ctime() + 5).ToString());

d0t, læg et svar så deler vi, som tak fordi du prøvede.
Avatar billede d0t Nybegynder
26. november 2008 - 14:40 #9
Cool, godt du fandt ud af det :)
Avatar billede kattendk Nybegynder
26. november 2008 - 14:50 #10
Ja og tak for hjælpen :-)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester