Seite 1 von 1

Mein WallpaperChanger hat Bugs :(

Verfasst: 24.02.2008 17:25
von Programie
Hi,

Ich hab ja selbst mal einen WallpaperChanger programmiert, aber der stürzt immer mal wieder beim Einlesen der Bilder ab.
Wenn ich ihn dann mit PureBasic debugge, sagt PureBasic, dass da ein "Invalid Memory Access" währe.
Woher kann das kommen? :(

Achja, hier ist der Quellcode. :wink:

PS: Er stürzt ab, wenn man mehr als etwa 1000 Bilder in der Bilderliste hat.

Hat jemand eine Idee, warum der ständig abstürzt?
Vielleicht kann ja jemand das mal Testen, der auch 1000 Bilder oder mehr hat. :allright:

Thx schonmal im Voraus! :allright:

Verfasst: 24.02.2008 17:45
von tobe
hallo Programie,

entweder ist dein Quellcode nicht ganz vollständig oder du benutzt userlibs, weil AppRunning() kennt mein purebasic nicht.

mfG
tobe

Verfasst: 24.02.2008 18:11
von AND51
AppRunning() ist ein Befehl aus den PBOSL, eine große, öffentliche Userlibrary. Die hast du nicht installiert (ich auch nicht^^).
Deswegen kennt dein PureBasic den Befehl nicht.

Verfasst: 24.02.2008 19:00
von Programie
Also die einzige UserLib-Funktion, die ich in meinem Programm verwende, ist "AppRunning()" aus der PBOSL (PureBasicOpenSourceLibrary). :wink:

Verfasst: 24.02.2008 19:14
von lfy
Moin,

bei

Code: Alles auswählen

CreateFile(1000,"c:\a_1000.test")
passiert dasselbe, allerdings bekommt man hier dann die Ursache zu sehen.
Die Filenummer darf nicht => 1000 sein.

Ich habe mir den Quellcode nicht komplett angesehen, aber zumindest bei Deiner Prozedur "IsFileEx(" verwendest Du PB_Any. Wenn diese Procedere in einer Schleife mit mehr als 999 Durchläufen aufgerufen wird dann knallt es...

VG lfy

Verfasst: 24.02.2008 19:24
von Programie
lfy hat geschrieben:Ich habe mir den Quellcode nicht komplett angesehen, aber zumindest bei Deiner Prozedur "IsFileEx(" verwendest Du PB_Any. Wenn diese Procedere in einer Schleife mit mehr als 999 Durchläufen aufgerufen wird dann knallt es...
Die wird aber nicht in einer Schleife aufgerufen. <)

Achja, ich hab die Stelle mit dem IMA (Invalid Memory Access) jetzt gefunden!
Das hier wird als Fehler markiert:

Code: Alles auswählen

SetGadgetText(#Image_Message,Path$+Name$)
Diese Zeile gibt den aktuellen Dateiname mit Pfad in dem Info-Fenster aus, welches beim Start erscheint, wenn die Bilder geladen werden.
Beim ersten Start ging es. Aber als ich mein Programm dann wieder beendete und neu getstartet hatte, kam dann dieser Fehler. :(
Was kann an SetGadgetText() falsch sein? :mrgreen:

Verfasst: 24.02.2008 19:29
von lfy
Meiner Meinung nach hat es definitiv etwas mit der Filenummer > 1000 zu tun.
Wenn Du ein wenig probierst und Dir die Variablenliste anschaust so wirst Du sicherlich feststellen, dass es immer bei Dateinummer 1000 knallt.

Vg lfy

Verfasst: 24.02.2008 19:33
von Programie
Achja, es werden bei mir 1423 Bilder geladen. Ist das zu viel für eine LinkedList? :lol:
Also 1423 Elemente in der LinkedList.^^

Verfasst: 24.02.2008 19:45
von lfy
Programie hat geschrieben:Achja, es werden bei mir 1423 Bilder geladen. Ist das zu viel für eine LinkedList? :lol:
Also 1423 Elemente in der LinkedList.^^
Wo hatte ich LinkedList erwähnt?
Ich habe sinngemäß geschrieben: Wenn die Filenummer => 1000 ist dann schmieren alle Filebefehle mit denselben Symptomen ab.

Obwohl mein Vorschlag mit der Variablenliste schwachsinnig war.

Probiere doch einfach mal:

Code: Alles auswählen

CreateFile(999,"c:\a_999.test") ; <- funktioniert
CreateFile(1000,"c:\a_1000.test") ; <- funktioniert NICHT

Verfasst: 24.02.2008 19:49
von Programie
lfy hat geschrieben:
Programie hat geschrieben:Achja, es werden bei mir 1423 Bilder geladen. Ist das zu viel für eine LinkedList? :lol:
Also 1423 Elemente in der LinkedList.^^
Wo hatte ich LinkedList erwähnt?
Ich habe sinngemäß geschrieben: Wenn die Filenummer => 1000 ist dann schmieren alle Filebefehle mit denselben Symptomen ab.

Obwohl mein Vorschlag mit der Variablenliste schwachsinnig war.

Probiere doch einfach mal:

Code: Alles auswählen

CreateFile(999,"c:\a_999.test") ; <- funktioniert
CreateFile(1000,"c:\a_1000.test") ; <- funktioniert NICHT
Aber bei mir im Code wird keine Datei geöffnet oder erstellt, bei der die Dateinummer größer als 999 ist. :roll:
Oder habe ich da irgendwo etwas übersehen?
Achja, der Fehler hat ja nichts mit Dateien zu tun. :allright: