Seite 4 von 5
Verfasst: 23.03.2009 14:34
von DrNo
Hi,
Bin grade in der Schule, kann deswegen nix testen.
@Kaeru Gaman:
Ich hab vorher doch schon erwähnt, dass ich HIER, direkt am Anfang nach dem
Code: Alles auswählen
If OpenPreferences("data\config.conf")
dav = ReadPreferenceLong("av", 1000)
ddate$ = ReadPreferenceString("date", "0000")
ClosePreferences()
EndIf
Nen MessageRequester("Info", "Version "+Str(dav)+"..." usw) eingefügt hab. Und da hats gefunzt!
Muss man das vllt. bei jeder Procedure aufrufen?
Verfasst: 23.03.2009 15:16
von Kaeru Gaman
> Muss man das vllt. bei jeder Procedure aufrufen?
momendemal....
du fragst doch jetzt nicht allen ernstes, warum deine nicht-globalen variablen in irgendwelchen procedures nicht bekannt sind?
Verfasst: 23.03.2009 15:59
von Andesdaf
> du fragst doch jetzt nicht allen ernstes, warum deine nicht-globalen variablen in irgendwelchen procedures nicht bekannt sind?
das wäre jetzt fatal

Verfasst: 23.03.2009 20:17
von DrNo
Ok stimmt. Geb ich zu....da gabs doch irgendwelche Einschränkungen wie Public func und so ähnlich, oder?
Sorry, aber du weisst doch inzwischen sicher dass ich ein PB noob [nup] bin, und Proceduren auch erst ein paar mal Verwendet hab, aber auch nur der Übersicht wegen...

Verfasst: 23.03.2009 21:04
von DrNo
Ok hat sich erledigt...hab den Trick raus

Verfasst: 23.03.2009 22:12
von DrNo
Sorry, muss leider noch nochmal nerfen:
Ich hab das Scanengine überhaupt nicht verändert, nur das Programm und die Ausgabe etwas gestaltet. Das Searchengine sieht so aus:
Code: Alles auswählen
Procedure Scan(Pfad$)
If ReadFile(0, "data\AKNL32.akl") //Die Datei mit der Erkennungsliste
NewList SL.s()
While Not Eof(0)
AddElement(SL())
SL() = ReadString(0)
Debug SL()
Wend
CloseFile(0)
End
EndIf
EDID = ExamineDirectory(#PB_Any,Pfad$,"*.*")
If EDID
While NextDirectoryEntry(EDID)
Entryname$ = DirectoryEntryName(EDID)
If DirectoryEntryType(EDID) = #PB_DirectoryEntry_Directory And Not Entryname$ = "." And Not Entryname$ = ".."
Scan(Pfad$+"\"+Entryname$)
ElseIf DirectoryEntryType(EDID) = #PB_DirectoryEntry_File And Not Entryname$ = "." And Not Entryname$ = ".."
ForEach SL() //ZEILE 8
If SL() = Entryname$
PrintN("Fund! "+Entryname$) //Die Funde werden in der Konsole ausgegeben - nur zum Test bis jetzt
EndIf
Next
EndIf
Wend
FinishDirectory(EDID)
EndIf
EndProcedure
Aber immer bei Zeile 8 (siehe Code), stürzt das Programm ab und der Debugger meldet mir folgendes:
[ERROR]Invalid memory access (write error at adress 8 ).
Was hab ich jetzt schonwieder falsch gemacht?
DrNo
Verfasst: 23.03.2009 22:35
von Fluid Byte
Public func? VisualBasic?
Verfasst: 23.03.2009 23:15
von DrNo
Falls du das auf meinen Vorletzten Beitrag beziehst...damit meine ich Global usw.
Verfasst: 23.03.2009 23:42
von Kaeru Gaman
wo der IMA herkommt ist schwer zu sagen.
ein IMA wird fast nie dort verursacht, wo er auftritt.
irgendwo in deinem Programm, vor dem Aufruf, wird der Stack kaputtet,
und ausgerechnet bei dem Wend tritt er auf.
Verfasst: 24.03.2009 15:43
von DrNo
Fluid Byte hat geschrieben:Public func? VisualBasic?
Hab früher hin und wieder in einem Spiel (Clonk) gescriptet, das ähnlich wie VB aufgebaut ist:
@ Kaeru_Gaman (ich kann dein Namen jetzt endlich auswendig schreiben 8-B )
Wie meinst du das und woran könnte das liegen?
Weil genau den Code hab ich davor ohne besondere GUI benutzt, da hats geklappt.
DrNo