Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Compiler Bug bei zuvielen Bload?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 30.09.2012, 17:09    Titel: Compiler Bug bei zuvielen Bload? Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 30.09.2012, 17:19    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 30.09.2012, 17:27    Titel: Antworten mit Zitat

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. zwinkern

Übrigens: Für mich klingt das Problem auch nach Programmfehler bei dir und nicht nach gfxlib-Bug. Aber wie sollten wir das schon herausfinden?! zwinkern
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 30.09.2012, 18:59    Titel: Antworten mit Zitat

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... lachen lachen lachen
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 30.09.2012, 19:23    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 956
Wohnort: Austria

BeitragVerfasst am: 30.09.2012, 19:30    Titel: Antworten mit Zitat

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 zwinkern ) 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
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 30.09.2012, 21:07    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 30.09.2012, 22:26    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 30.09.2012, 22:34    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 30.09.2012, 22:42    Titel: Antworten mit Zitat

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! happy happy

Das muss ich mir für die Zukunft merken! Aus Fehlern lernt man.
Danke für die professionelle Hilfe!!!

Ich -->: Kopf schütteln (Trottel)
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 01.10.2012, 17:59    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz