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:

Text in Binäre Daten umwandeln

 
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
arduno



Anmeldungsdatum: 12.05.2011
Beiträge: 252

BeitragVerfasst am: 18.06.2013, 10:12    Titel: Text in Binäre Daten umwandeln Antworten mit Zitat

Hallo, guten Tag.
Ich möchte bitte alle Werte die in der Textdatei vorkommen in eine Binäre Datei einfach hintereinander abspeichern ohne Unterscheidung für Sprite 1 usw. . Wie kann ich die jetzt rausfiltern, weil ja dazwischen immer ein Komma ist und die neuen Sprite mit einem Text angekündig werden.

Danke.
Gruss
peter

Code:

; Sprite 0

0,0,0,0,0,0,0,0,0,0,0,0,15,255,240,8,0,16,8,0,16,8,0,16,8,0,16,8,0,16,8
,0,16,8,0,16,8,0,16,8,0,16,8,0,16,8,0,16,8,0,16,15,255,240,0,0,0,0,0,0,
0,0,0,4

; Sprite 1

0,0,0,0,0,0,3,192,0,2,112,0,2,12,0,4,3,128,4,0,96,8,0,28,8,0,8,8,0,8,16
,0,16,16,0,16,32,0,16,32,0,32,56,0,32,14,0,64,1,128,64,0,112,192,0,12
,128,0,3,128,0,0,0,4

......
......
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 18.06.2013, 11:42    Titel: Antworten mit Zitat

Hi,
Code:
Dim a As String
Dim u As UByte
Open "sprite.txt" For Input As #1
  Open "sprite.bin" For Binary As #2
    Do
      Input #1, a
      If Len(a)>0 And Len(a)<4 Then
        u = Val(a)
        Put #2,,u
      EndIf
    Loop Until EOF(1)
  Close #2
Close #1
Sleep

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
arduno



Anmeldungsdatum: 12.05.2011
Beiträge: 252

BeitragVerfasst am: 18.06.2013, 15:37    Titel: Antworten mit Zitat

Jup, danke.
Jetzt kann ich Spritedaten einlesen.

Kannst du mir mal bitte etwas erklären, was in der Schleife so abläuft.
Das kapier ich nicht so, das der Text einfach so gefiltert wird.

Danke.
Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



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

BeitragVerfasst am: 18.06.2013, 16:24    Titel: Antworten mit Zitat

Code:
If Len(a)>0 And Len(a)<4 Then

filtert zunächst einmal alle Leerzeilen und Spritedefinitionen "; Sprite 0" usw. heraus, weil die Angaben zu kurz oder zu lang sind. Und INPUT liest sowieso immer nur bis zum nächsten Komma, also sind die Kommata ebenfalls kein Problem.
_________________
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
arduno



Anmeldungsdatum: 12.05.2011
Beiträge: 252

BeitragVerfasst am: 18.06.2013, 17:07    Titel: Antworten mit Zitat

Jup, danke.

Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 19.06.2013, 10:08    Titel: Antworten mit Zitat

Hi,
es ist genau so wie nemored es erklärt hat.
Ich habe da die Eigenschaften von INPUT # und LEN benutzt um den Text zu filtern.
Man kann natürlich auch Zeichenweise die Textdatei untersuchen und immer die Zahlen zwischen Nichtzahlenzeichen filtern.

Kleiner Nachtrag:
Statt VAL (das ein Double zurück gibt) fand ich in der Referenz CUBYTE, was das ganze weiter vereinfacht.
Code:
Dim a As String
Open "sprite.txt" For Input As #1
  Open "sprite.bin" For Binary As #2
    Do
      Input #1, a 'liest bis Zeilenende oder bis zum Komma
      If Len(a)>0 And Len(a)<4 Then 'Zahl als String nur 1-3 Ziffern
        Put #2,,CUByte(a)'schreibt den Wert als Byte in die Datei
      EndIf
    Loop Until Eof(1)
  Close #2
Close #1
Sleep

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
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