Hallo,
ik ben bezig met een kloon van het programma mIrc, alleen dan met standaard ingebouwde scripts. Zoals het laten zien van je harde schijf info.
Nu krijg ik steeds een overflow error maar snap niet waar deze vandaan komt
Dit heb ik in General Declarations staan:
Dit staat in de functie die de harde schijf info uitleest
En dan gebruik ik deze strings in de funcite voor het irc.sendmessage gedeelte wat verder wel naar behoren werkt.
En dan hebben we nog de volgende functies die dus daadwerkelijk de harde schijf benaderen en het spul in een beetje leesbaar formaat maakt:
Weet iemand waar deze overflow vandaan komt en hoe ik deze kan oplossen? Ik vermoed dat ik teveel vrije ruimte heb waardoor FormatKB hem niet kan verwerken maar dat kan ik fout hebben
ik ben bezig met een kloon van het programma mIrc, alleen dan met standaard ingebouwde scripts. Zoals het laten zien van je harde schijf info.
Nu krijg ik steeds een overflow error maar snap niet waar deze vandaan komt
Dit heb ik in General Declarations staan:
Visual Basic:
1
2
3
4
5
| Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" (ByVal lpDirectoryName As String, lpFreeBytesAvailableToCaller As Currency, lpTotalNumberOfBytes As Currency, lpTotalNumberOfFreeBytes As Currency) As Long Private Declare Function StrFormatByteSize Lib _ "shlwapi" Alias "StrFormatByteSizeA" (ByVal _ dw As Long, ByVal pszBuf As String, ByRef _ cchBuf As Long) As String |
Dit staat in de functie die de harde schijf info uitleest
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
| Dim strDriveCFree As String Dim strDriveCTotal As String Dim strDriveDFree As String Dim strDriveDTotal As String Dim strDriveEFree As String Dim strDriveETotal As String strDriveCFree = FormatKB(DiscSpace("C:", 0)) strDriveCTotal = FormatKB(DiscSpace("C:", 1)) strDriveDFree = FormatKB(DiscSpace("D:", 0)) strDriveDTotal = FormatKB(DiscSpace("D:", 1)) strDriveEFree = FormatKB(DiscSpace("E:", 0)) strDriveETotal = FormatKB(DiscSpace("E:", 1)) |
En dan gebruik ik deze strings in de funcite voor het irc.sendmessage gedeelte wat verder wel naar behoren werkt.
En dan hebben we nog de volgende functies die dus daadwerkelijk de harde schijf benaderen en het spul in een beetje leesbaar formaat maakt:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| Private Function DiscSpace(ByVal DrvLetter As String, ByVal intOption As Integer) Dim Status As Long Dim TotalBytes As Currency Dim FreeBytes As Currency Dim BytesAvailableToCaller As Currency Status = GetDiskFreeSpaceEx(DrvLetter, BytesAvailableToCaller, _ TotalBytes, FreeBytes) If Status <> 0 Then Select Case intOption Case 0: DiscSpace = FreeBytes * 10000 Case 1: DiscSpace = TotalBytes * 10000 End Select End If End Function Private Function FormatKB(ByVal Amount As Long) As String Dim Buffer As String Dim Result As String FormatKB = "" Buffer = Space$(255) Result = StrFormatByteSize(Amount, Buffer, _ Len(Buffer)) If InStr(Result, vbNullChar) > 1 Then FormatKB = Left$(Result, InStr(Result, _ vbNullChar) - 1) End If End Function |
Weet iemand waar deze overflow vandaan komt en hoe ik deze kan oplossen? Ik vermoed dat ik teveel vrije ruimte heb waardoor FormatKB hem niet kan verwerken maar dat kan ik fout hebben
[ Voor 4% gewijzigd door Verwijderd op 03-12-2004 18:13 . Reden: typo ]