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:

Datei mit verschiedenen PTR-Dim wird nicht eingelesen

 
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
funkeld
gesperrt


Anmeldungsdatum: 10.10.2009
Beiträge: 179

BeitragVerfasst am: 22.05.2010, 17:24    Titel: Datei mit verschiedenen PTR-Dim wird nicht eingelesen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
darkinsanity
aka sts


Anmeldungsdatum: 01.11.2006
Beiträge: 456

BeitragVerfasst am: 23.05.2010, 11:29    Titel: Antworten mit Zitat

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 zwinkern
_________________
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak
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