 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
arduno
Anmeldungsdatum: 12.05.2011 Beiträge: 252
|
Verfasst am: 18.06.2013, 10:12 Titel: Text in Binäre Daten umwandeln |
|
|
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 |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 18.06.2013, 11:42 Titel: |
|
|
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 |
|
 |
arduno
Anmeldungsdatum: 12.05.2011 Beiträge: 252
|
Verfasst am: 18.06.2013, 15:37 Titel: |
|
|
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 |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4700 Wohnort: ~/
|
Verfasst am: 18.06.2013, 16:24 Titel: |
|
|
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 |
|
 |
arduno
Anmeldungsdatum: 12.05.2011 Beiträge: 252
|
Verfasst am: 18.06.2013, 17:07 Titel: |
|
|
Jup, danke.
Gruss |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 19.06.2013, 10:08 Titel: |
|
|
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 |
|
 |
|
|
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.
|
|