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:

BSAVE zum Speichern von Binärdaten

 
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
nemored



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

BeitragVerfasst am: 11.12.2021, 16:08    Titel: BSAVE zum Speichern von Binärdaten Antworten mit Zitat

Neben dem Einsatz zum Speichern von Bildausschnitten sollte BSAVE ja auch in der Lage sein, Binärdaten zu speichern. Ich bekomme aber schon bei so einem Mini-Programm einen Speicherzugriffsfehler:
Code:
DIM AS BYTE PTR speicher = ALLOCATE(100)
BSAVE "temp_test.sav", speicher, 16     ' bricht ab
DEALLOCATE speicher

Mache ich was falsch, oder wird diese Methode nicht (mehr) unterstützt? Wäre ja kein Problem, weil sich das leicht anderweitig ersetzen lässt, aber dann sollte die (deutsche und auch englische) Referenz angepasst werden.


edit:
OK, ich sehe gerade, wenn ich ein SCREENRES verwende, funktioniert es ohne Abbruch (ich muss aber noch die Ausgabe prüfen). Scheint, dass BSAVE auch dann Paletten-Informationen benötigt, wenn es gar keine grafische Speicherung vornehmen soll.
_________________
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
nemored



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

BeitragVerfasst am: 11.12.2021, 17:17    Titel: Antworten mit Zitat

So, mein Test war nun doch erfolgreich. Wenn ich es richtig sehe, benötigt BSAVE auf jeden Fall Informationen zur Farbpalette, egal ob es Bilddaten speichert oder nicht. Kann das jemand bestätigen oder entkräften?
_________________
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
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 11.12.2021, 18:14    Titel: GfxLib Include vs. SCREEN / SCREENRES Antworten mit Zitat

War da nicht sowas, dass man die gfxlib irgendwie "zwangsincluden" musste, wenn man auf deren Funktionen zugreifen will, ohne dass man SCREEN(RES) benutzt?

Ich erinnere mich, dass die LZW-Kompression aus der gfxlib auch nur funktionierte, wenn im Programm SCREEN / SCREENRES auftaucht. Wahrscheinlich war es egal, ob das tatsächlich ausgeführt wird oder nur in einer nie "wahren" IF-Abfrage steckt.
https://www.freebasic-portal.de/befehlsreferenz/tipps-und-tricks-465.html
_________________

Der Markt regelt das! | 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
nemored



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

BeitragVerfasst am: 11.12.2021, 19:16    Titel: Antworten mit Zitat

Da man bei BSAVE auch den Speicherort der Palette angeben kann, könnte man über diesen Umweg vielleicht sogar ohne SCREENRES auskommen (warum auch immer man eine Palette ohne gfxlib-Palettenunterstützung kreieren will durchgeknallt ). Ich denke, ich werde in der Referenz bei BSAVE mal die Information mit SCREENRES einpflegen.
_________________
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
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 11.12.2021, 22:27    Titel: Antworten mit Zitat

BSAVE ist wohl eher zum Speichern von Images gedacht, weshalb den Binärdaten auch automatisch 5 Headerbytes vorangestellt werden (die Datei ist 5 Bytes größer als der für "Größe" angegebene Wert).

Für das Speichern von reinen Binärdateien ist der PUT - Befehl besser geeignet:
Code:
Dim As UByte Ptr speicher = Callocate(100)
Open "temp_test.sav" For Output As #1
Put #1,, *speicher, 100
Close #1
DeAllocate speicher
?"OK"
Sleep
End


Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
nemored



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

BeitragVerfasst am: 12.12.2021, 00:35    Titel: Antworten mit Zitat

grindstone hat Folgendes geschrieben:
BSAVE ist wohl eher zum Speichern von Images gedacht [...]

Ja, deswegen wäre ich unter normalen Umständen auch nie darauf gekommen, BSAVE für die Binärblock-Speicherung einzusetzen. Ich will nur gerade den Befehl dokumentieren und muss ihn dazu natürlich auch austesten. Ich kann nur jedem empfehlen, eine Dokumentation zu schreiben - da kommt man auf die wildesten Sachen. lachen
_________________
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
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