Показать сообщение отдельно
Старый 03.10.2008, 19:07   #1
MadMedic
ПроЭктировщик
 
Регистрация: 05.08.2006
Сообщений: 183
Написано 107 полезных сообщений
(для 410 пользователей)
Помогите, вылетает Invalid Memory Acces

Помогите, пожалуйста, кто нибудь. При компилляции вылетает на втором (i=1) цикле на строке *L_Serial=AllocateMemory(4). Только не надо говорить о неразумном расходовании памяти, в программе и не такое может встретиться. Пробовал компилить на PB 4.01 и 4.20. В чем тут ошибка не пойму
;OpenLibrary(0, "kernel32.DLL")


For i=0 To 25

Debug i

  *S_Drive=AllocateMemory(256)
  PokeS(*S_Drive,Chr(65+i)+":\")
  
  *S_Volume=AllocateMemory(256)
  PokeS(*S_Volume,Space(256))
  
  *L_Volume=AllocateMemory(4)
  PokeL(*L_Volume,256)
  
  *L_Serial=AllocateMemory(4)
  PokeL(*L_Serial,0)
  
  *L_Max=AllocateMemory(4)
  PokeL(*L_Max,0)
  
  *L_Flags=AllocateMemory(4)
  PokeL(*L_Flags,0)
  
  *S_FileSys=AllocateMemory(256)
  
  *L_FileSys=AllocateMemory(4)
  PokeL(*L_FileSys,256)

  ;res=CallFunction(0, "GetVolumeInformationA",*S_Drive,*S_Volume,*L_Volume,*L_Serial,*L_Max,*L_Flags,*S_FileSys,*L_FileSys)

  If res=1
    Debug  "path "+PeekS(*S_Drive)
    Debug  "volume name "+ PeekS(*S_Volume)
    Debug  "Serial "+Str(PeekL(*L_Serial))
    Debug  "Flags "+Str(PeekL(*L_Flags))
    Debug  "File system "+PeekS(*S_FileSys)
  EndIf

 *S_DriveName=AllocateMemory(256)
 PokeS(*S_DriveName,Chr(65+i)+":\")

 *L_Free=AllocateMemory(8)
 PokeQ(*L_Free,0)

 *L_Total=AllocateMemory(8)
 PokeQ(*L_Total,0)

 *L_Avial=AllocateMemory(8)
 PokeQ(*L_Avial,0)

; res=CallFunction(0, "GetDiskFreeSpaceExA",*S_DriveName,*L_Free,*L_Total,*L_Avial)

 If res=1
   Debug  "path "+PeekS(*S_Drive)
   Debug  "Free "+Str(PeekQ(*L_Free)/1048576)
   Debug  "Total "+Str(PeekQ(*L_Total)/1048576)
   Debug  "Aviable "+Str(PeekQ(*L_Avial)/1048576)
 EndIf


Next
(Offline)