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 :lol:

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? :freak:

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:

Code: Alles auswählen

public func hit()
{
Explode(20, 30);
}

@ 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