WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   VB6 Hilfe (http://www.wcm.at/forum/showthread.php?t=47962)

mqs 28.02.2002 09:31

VB6 Hilfe
 
Open Befehl:

Und zwarr wenn ich ein File öffen, wie zB ein mp3 file mit den Befehl:

Get nr, X$, s$
Buffer(i) = s$
X$ = X$ + 1024

mit x=1024 geh ich davon aus, dass in der ersten zeile 1024 zeichen vorhanden sind, im texteditor wirds auch so angezeigt

x$ ist der anfang von wo ich lese
s$ ist die variable, wo der Inhalt hingespeichert wird
nr ist 1024
dh wenn x$=1 dann soll er die ersten 1024 Zeichen in die Var. s$ speichern, aber wenn in dem file dann ein Zeichen vorhanden ist, dass sagt, dass jetzt die neue Zeile kommt, dann speichert er die ersten zeichen ist zu diesem Zeichen in die Var ab, aber nicht die darauffolgenden. wie kann ich dass ausbessern? ich möchte, dass die ersten 1024 zeichen in s$ abgespeichert werden, und nicht die ersten paar zeichen

ReiniBugman 28.02.2002 16:05

irgendwie verstehe ich deine Ausführung bzw. Code nicht ganz...
warum ist zB 'X' bei dir ein String? Wie hast du das File geöffnet (Random, Binary)?
Egal, vielleicht hilft dir der beigefügte VB-Code (ich hoffe,
die Formatierungen bleiben erhalten)


...
Dim FileNbr As Integer
Dim SourceFile As String
Dim Data As String
Dim DataByte As String
Dim BlockSize As Long
Dim i As Integer

FileNbr = FreeFile
BlockSize = 1024
SourceFile = "c:\winnt\keyhh.exe" ' die einzulesende Datei

Open SourceFile For Binary As FileNbr

Do Until EOF(FileNbr) Or LOF(FileNbr) = Loc(FileNbr)
'Datenstring zurücksetzen
Data = ""

' Gibt's überhaupt noch 'BLOCKSIZE' Bytes zu lesen?
If LOF(FileNbr) - Loc(FileNbr) < BlockSize Then
' nein, Die Größe des Data-String muß also angepaßt werden
Data = String(LOF(FileNbr) - Loc(FileNbr), 0)
Else
' es gibt noch mindestens BLOCKSIZE Bytes zu lesen
Data = String(BlockSize, 0)
End If
Get FileNbr, , Data

' Die gelesenen Daten auf Debug.Print schreiben
For i = 1 To Len(Data)
DataByte = Mid(Data, i, 1)

' Handelt es sich um ein Sonderzeichen?
If Asc(DataByte) < 32 Then
' ja, es wird ein '.' ausgegeben
Debug.Print ".";
Else
' nein, es kann direkt das Zeichen ausgegeben werden
Debug.Print DataByte;
End If
Next i
Debug.Print
Loop

...

ReiniBugman 28.02.2002 16:06

wie ich sehe sind die Formatierungen weg. Musst also selber einrücken.

pong 28.02.2002 16:53

@ReiniBugman wennst das nächste mal den tag [code] verwendest bleibn die formatierungen erhalten

mqs 01.03.2002 14:16

hmm ja danke, alles schön und gut, aber ich will das jetzt weder im debug noch in einem textfeld ausgeben, sondern will das in eine variable speichern. ich hab da mal statt debug.print mp3=mp3 & DataByte eingegeben, aber bei einen bestimmten asc zeichen bricht er eingach ab in die variable zu schreiben, i glaub das zeichen ist ASC 12

JosefS 01.03.2002 15:02

Zitat:

Original geschrieben von mqs
hmm ja danke, alles schön und gut, aber ich will das jetzt weder im debug noch in einem textfeld ausgeben, sondern will das in eine variable speichern. ich hab da mal statt debug.print mp3=mp3 & DataByte eingegeben, aber bei einen bestimmten asc zeichen bricht er eingach ab in die variable zu schreiben, i glaub das zeichen ist ASC 12
du kannst auch keine binärdaten in einen string speichern!
mp3 ist ein string, das "&"-zeichen verknüpft 2 strings miteinander...
da isses doch klar, dass du eine fehlermeldung bekommst, da in einem string nicht alle "werte" drinnstehn können.

öffne die datei mit:
Code:

    Open "meinmp3.mp3" For Binary Access Read As #1
und deklarier mp3 folgendermaßen:

Code:

    Dim mp3(die größe vom mp3) As Byte
und dann lies nach belieben ein!

solltest du bestimmte stellen in mp3 als string haben wollen, geht das so:

Code:

    dim i as integer
    dim str as string

    for i = anfang to ende
        str = str & chr(mp3(i))
    next

mfg JosefS

ReiniBugman 01.03.2002 15:09

Speicher dir das ganze doch in einem Byte-array, wie groß der sein muß weißt du ja durch die Filegröße.
Vielleicht wird ja einfach nur die maximale Stringlänge überschritten. Die liegt bei VB6 zwar bei 2^31 aber vielleicht sind deine mp3's ja noch größer.

Sonic 01.03.2002 17:25

HI!

Wenn du das ganze File einlesen willst gehts am leichtersten und am schnellsten so:

Code:

Dim lFileSize as Long
Dim File() as Binary

lFileSize = FileLen("MeinFile.mp3")
Redim File(lFileSize)
Open "MeinFile.mp3" for Binary as #1
get #1,,File
close #1



Alle Zeitangaben in WEZ +2. Es ist jetzt 16:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag