Ich habe in meinem Programm zwei Proceduren die sich anscheinend behindern.
Die erste habe ich einfach übernommen.
Wenn ich sie durchlaufe erhalte ich Zeitweise beim Befehl
Code: Alles auswählen
FreeMemory(ServerUniCode)
Rufe ich die zweite Procedure auf, ohne vorher die 1 Procedure aufzurufen läuft sie.
Lasse ich in der ersten den Freememory Befehl weg (muß ja nicht unbedingt sein) ist der Fehler in der ersten Procedure natürlich weg, der zweite in der folgenden Procedure bleibt aber.(ERROR Invalid memory access (read error at address 86))
Daraus schließe ich, dass in der Procedure 1 wohl etwas schief läuft, was sich aber erst in der 2ten auswirkt.
Hat da jemand eine Idee dazu.
Procedure 1
Code: Alles auswählen
Procedure ErmittleShares(Netzdrive.s)
Protected dwEntriesRead.l, dwTotalEntries.l, *Buffer.LONG
Protected output.s ,outputLen.l, result.l
ServerUnicodeLen = MultiByteToWideChar_( #CP_ACP, 0, Netzdrive, -1, 0,0)
ServerUniCode = AllocateMemory(ServerUnicodeLen)
UnicodeLen = MultiByteToWideChar_( #CP_ACP, 0, Netzdrive, -1, ServerUniCode, ServerUnicodeLen)
result = NetShareEnum_(ServerUniCode, 0, @*Buffer, #MAX_PREFERRED_LENGTH, @dwEntriesRead,@dwTotalEntries, #Null)
If result = 0
For i = 0 To dwEntriesRead-1
*string.STRING = *Buffer\l
output = Space(256)
outputLen = WideCharToMultiByte_( #CP_ACP, 0, *string, -1, output, 256,0,0)
If Right(output,1) = "$"
Else
AddGadgetItem(#CifsCombo_1, -1, output)
;MessageRequester("Share("+Str(i)+")", output)
EndIf
*Buffer+4
Next
NetApiBufferFree_(*Buffer)
Else
Debug "SystemError:" +Str(result)
EndIf
FreeMemory(ServerUniCode)
EndProcedure
Code: Alles auswählen
Procedure Cifsinstall()
If ReadFile(0, Ziel.s + "rc.local")
length = Lof(0)
*rclocal = AllocateMemory(length)
If *rclocal
bytes = ReadData(0, *rclocal, length)
EndIf
CloseFile(0)
EndIf
EndProcedure