Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
ALWIM

Anmeldungsdatum: 08.08.2006 Beiträge: 1048 Wohnort: Niederbayern
|
Verfasst am: 30.09.2012, 17:09 Titel: Compiler Bug bei zuvielen Bload? |
|
|
Kann es sein, dass Freebasic bei zu vielen Bload durcheinander kommt und die Bilddateien nicht mehr richtig bzw. ein falsches Bild anzeigt?
Ich habe im Quellcoce 27 Mal Bload drin und er zeigt mir das 1. das 2. und das 3. Bild gar nicht an und das vorletzte Bild falsch an. Teilweise das vorletzte wieder richtig. Das erste funktioniert definitiv nicht! Egal was ich mache.
Selbst wenn ich unterschiedliche Bezeichner verwende, klappt es nicht.
Die Bilder sollen immer nur dann angezeigt werden, sobald ich eine bestimmte Taste drücke. Bei der 1 zum Beispiel das erste Bild bei der 9 das 9. Bild bei a das letzte Bild...
Bilder und Quellcode kann ich wegen Copyrightsverletzung nirgends hochladen.
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 30.09.2012, 17:19 Titel: |
|
|
Bei so vielen Leuten, die BLoad schon verwenden und in allen erdenklichen Formen, denk ich nicht, dass hier ein Compilerbug vorliegt, vielmehr wird es wohl an deiner Programmlogik liegen.
Ohne Code wird dir da aber keiner helfen können, ins Blaue raten macht keinen Sinn. |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 30.09.2012, 17:27 Titel: |
|
|
MOD hat Folgendes geschrieben: | Ohne Code wird dir da aber keiner helfen können, ins Blaue raten macht keinen Sinn. |
ALWIM hat Folgendes geschrieben: | Bilder und Quellcode kann ich wegen Copyrightsverletzung nirgends hochladen. |
Wessen Copyright würdest du damit verletzen? Wenn du deine Programme und Grafiken selber erstellst, bekommst du auch keine Probleme mit Urheberrechtsverletzungen.
Übrigens: Für mich klingt das Problem auch nach Programmfehler bei dir und nicht nach gfxlib-Bug. Aber wie sollten wir das schon herausfinden?!  _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
ALWIM

Anmeldungsdatum: 08.08.2006 Beiträge: 1048 Wohnort: Niederbayern
|
Verfasst am: 30.09.2012, 18:59 Titel: |
|
|
Zitat: | Zitat von Sebastian:
Übrigens: Für mich klingt das Problem auch nach Programmfehler bei dir und nicht nach gfxlib-Bug. Aber wie sollten wir das schon herausfinden?! | komisch nur, dass das ganze nach dem zweiten Restart ohne das Programm zu beenden funktioniert? Freebasic 0.23.0 hat das gleiche Problem wie 0.24.0?!
Vielleicht kann ich den Quellcode hier doch posten. Muss mal den Autor fragen ob das geht! Warscheinlich nicht.
Sauglumb, greißlig's, wos hoda denn scho wieda? Des dearf doch ned woar sei! Warum funktioniert des denn ned, so wia i wui? Ze Fix...  _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 30.09.2012, 19:23 Titel: |
|
|
ALWIM hat Folgendes geschrieben: | Freebasic 0.23.0 hat das gleiche Problem wie 0.24.0?! |
Dass ein fehlerhafter Code sowohl in FB 0.23.0 als auch in FB 0.24.0 nicht funktioniert, wäre doch einleuchtend.
ALWIM hat Folgendes geschrieben: | komisch nur, dass das ganze nach dem zweiten Restart ohne das Programm zu beenden funktioniert? |
"Restart ohne das Programm zu beenden" - kannst du beschreiben, was du damit meinst?
Naja, aber wie MOD auch schon gesagt hat: Ohne Quelltext kann man da doch wirklich nur raten.
Wenn du deinen Quelltext aus Geheimhaltungs-/Copyrightgründen nicht veröffentlichen kannst/willst, dann bau doch mal ein kleines Programmbeispiel, das nichts weiter tut, als die fraglichen BLOADs auszuführen. So könnte man den Fehler evtl. reproduzieren und schauen, woran es liegt. Soll heißen: Bau einen Minimal-Code, der das Problem verursacht, damit man nachvollziehen kann, was schief läuft.
Den supergeheimen Algorithmus zum Buchstaben-Zählen und die strikt vertrauliche MessageBox-Technologie müsstest du ja nicht mit reinnehmen. Nur die Routinen rund um BLOAD, die notwendig sind, um das Problem, das du beschreibst, nachverfolgen zu können. _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
St_W

Anmeldungsdatum: 22.07.2007 Beiträge: 956 Wohnort: Austria
|
Verfasst am: 30.09.2012, 19:30 Titel: |
|
|
ALWIM hat Folgendes geschrieben: | komisch nur, dass das ganze nach dem zweiten Restart ohne das Programm zu beenden funktioniert? |
Ich weiß zwar nicht wie du da genau vorgegangen bist, aber irgendwie hört sich das nach einem Fehler bei der Speicher-Allokation an. Bist du dir auch sicher, dass du genug Speicher für jedes Bild vorher anforderst, dass du lädst?
Aber wie bereits von meinen Vorrednern erwähnt - ohne Quellcode kann man nur raten.
ALWIM hat Folgendes geschrieben: | Vielleicht kann ich den Quellcode hier doch posten. Muss mal den Autor fragen ob das geht! Wahrscheinlich nicht. |
Du musst ja nicht gleich dein gesamtes Projekt hochladen. Versuche dein Problem auf ein möglichst kleines Programm zu reduzieren, wo der Fehler noch immer auftritt. Wenn da dann nur mehr ein paar BLOADs und ImageCreates vorkommen wird es wohl möglich sein den Quellcode + Beispielbilder hochzuladen. Und wenn da kein Code wegfällt und du quasi schon das Skelett vor dir hast, dann erreicht dein Code wohl ohnehin nicht die nötige Schöpfungshöhe um überhaupt für einen Urheberrechtsanspruch in Frage zu kommen (bin allerdings kein Jurist ) und hast somit auch kein Problem ihn hochzuladen. _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 30.09.2012, 21:07 Titel: |
|
|
Beim patfinder lade ich in jedem Spiel 104 Kartenbilder; beim Laser-Spiel sind es möglicherweise sogar noch mehr Bilder (müsste ich nachschauen). Funktioniert mit fbc 0.23 und 0.24 sowohl unter Linux als auch unter Windows. An der Menge der BLOAD liegt es definitiv nicht. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
ALWIM

Anmeldungsdatum: 08.08.2006 Beiträge: 1048 Wohnort: Niederbayern
|
Verfasst am: 30.09.2012, 22:26 Titel: |
|
|
Zitat: | Aber wie bereits von meinen Vorrednern erwähnt - ohne Quellcode kann man nur raten. |
Zitat: | Du musst ja nicht gleich dein gesamtes Projekt hochladen. Versuche dein Problem auf ein möglichst kleines Programm zu reduzieren, wo der Fehler noch immer auftritt. Wenn da dann nur mehr ein paar BLOADs und ImageCreates vorkommen wird es wohl möglich sein den Quellcode + Beispielbilder hochzuladen. Und wenn da kein Code wegfällt und du quasi schon das Skelett vor dir hast, dann erreicht dein Code wohl ohnehin nicht die nötige Schöpfungshöhe um überhaupt für einen Urheberrechtsanspruch in Frage zu kommen (bin allerdings kein Jurist ) und hast somit auch kein Problem ihn hochzuladen. |
Ich fürchte, ich kann den Quellcode nicht so weit reduzieren, dass ich ihn hier posten kann. Kann aber keinen groben Fehler im Programm finden. Eigentlich finde ich überhaupt keinen? Von der Theorie her müsste es aber funktionieren? Vielleicht schaffe ich es doch noch ein Programm zu erstellen wo der Fehler auftritt, damit ihn den Code hier posten kann.
Zitat: | Ich weiß zwar nicht wie du da genau vorgegangen bist, aber irgendwie hört sich das nach einem Fehler bei der Speicher-Allokation an. Bist du dir auch sicher, dass du genug Speicher für jedes Bild vorher anforderst, dass du lädst? |
Ich habe Bitmapdateien die genau 16x16 groß sind.
Mit folgendem Code lade ich die Dateien:
Code: | DIM SHARED AS Any Ptr 1puffer
1puffer = ImageCreate(16,16)
BLOAD (ExePath & "\1.bmp", 1puffer) |
mache anschließend gleich ein Imagedestroy ohne die Bitmap mit Put auf dem Bildschirm anzuzeigen. Das kommt erst später.
Ohne die Bloadaufrufe funktioniert das Programm ohne jegliche Probleme. Die eigentliche Funktion ist vorhanden. Füge ich dann die entsprechenden Bload (die in einem anderen Programm problemlos funktionieren!) hinzu, klappt es nicht so wie ich will. _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 30.09.2012, 22:34 Titel: |
|
|
Verstehe ich das richtig? Du machst ein IMAGECREATE, dann ein BLOAD und ein IMAGEDESTROY (der Speicher wird wieder freigegeben und möglicherweise im weiteren Programm überschrieben) und willst danach den zerstörten Speicher mit PUT anzeigen? Wenn dem so ist, brauchst du dich nicht zu wundern, wenn was falsches angezeigt wird ... _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
ALWIM

Anmeldungsdatum: 08.08.2006 Beiträge: 1048 Wohnort: Niederbayern
|
Verfasst am: 30.09.2012, 22:42 Titel: |
|
|
nemored hat Folgendes geschrieben: | Verstehe ich das richtig? Du machst ein IMAGECREATE, dann ein BLOAD und ein IMAGEDESTROY (der Speicher wird wieder freigegeben und möglicherweise im weiteren Programm überschrieben) und willst danach den zerstörten Speicher mit PUT anzeigen? Wenn dem so ist, brauchst du dich nicht zu wundern, wenn was falsches angezeigt wird ... |
Quellcode geändert und siehe da: Es klappt!
Das muss ich mir für die Zukunft merken! Aus Fehlern lernt man.
Danke für die professionelle Hilfe!!!
Ich -->: (Trottel) _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 01.10.2012, 17:59 Titel: |
|
|
Zitat: | IMAGEDESTROY gibt einen mit IMAGECREATE reservierten Speicher wieder frei. 'image' ist ein Pointer, der auf den freizugebenden Speicherbereich zeigt.
Jeder Speicher, der mit IMAGECREATE erstellt wurde, sollte auch unbedingt wieder mit IMAGEDESTROY freigegeben werden, sobald er nicht mehr benötigt wird.
|
|
|
Nach oben |
|
 |
|