 |
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 |
funkeld gesperrt
Anmeldungsdatum: 10.10.2009 Beiträge: 179
|
Verfasst am: 22.05.2010, 17:24 Titel: Datei mit verschiedenen PTR-Dim wird nicht eingelesen |
|
|
Hallo mit "byte" kann ich die Daten einlesen:
dim shared as byte ptr datenbuffer
Da ich aber 4-Byte als Wert "Uinteger" auslesen möchte trage ich dort "Uinteger" ein. Jetzt steigt das Programm sofort aus.
Warum?
Gruss
Code: |
#include "vbcompat.bi"
#INCLUDE "windows.bi"
#INCLUDE "win/mmsystem.bi"
screen 18,32
Dim shared as integer nsamples ,datenlaenge,zaehler,menu
dim shared as byte ptr datenbuffer
Dim Shared As String dateiname
Dim shared As Integer ff
ff= FreeFile
Sub lade_datei()
Input "Dateiname : ";dateiname
If FILEEXISTS( dateiname+".wav" ) Then
Open dateiname+".wav" for Binary as #ff
datenlaenge=LOF(1)
datenbuffer= Allocate(datenlaenge)
Get #ff , ,datenbuffer[0], datenlaenge
Close #ff
Else
Print "Datei ist nicht vorhanden !"
print
Exit sub
EndIf
nsamples = 44
End Sub
Do
Print "1 = Ende ";"2 = Datei "
Input menu
If menu=1 Then
Exit Do
EndIf
If menu=2 Then
DeAllocate(datenbuffer)
lade_datei()
print
Print datenlaenge
print
EndIf
Loop
DeAllocate(datenbuffer)
|
|
|
Nach oben |
|
 |
darkinsanity aka sts

Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 23.05.2010, 11:29 Titel: |
|
|
Ich bin mir nicht sicher, ob das direkt etwas mit dem Fehler zu tun hat, aber achte mal darauf:
Code: | OPEN dateiname+".wav" FOR BINARY AS #ff
datenlaenge=LOF(1) |
Wenn du für die Datei das handle ff hast, solltest du das auch bei lof verwenden, und nicht darauf hoffen das die Datei wirklich das handle 1 hat.
Code: | datenlaenge=LOF(ff) |
Beachte auch mal den Fall, das die Größe deiner Datei möglicherweise nicht durch 4 teilbar ist. Da könnten dann so Sachen rauskommen wie ein uint-Pointer auf 3 Byte - sicherlich auch nicht so schön.
Außerdem gibts du in deinem Code Speicher frei, den du noch gar nicht reserviert hast  _________________ Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak |
|
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.
|
|