WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 28.02.2002, 09:31   #1
mqs
Master
 
Registriert seit: 08.05.2001
Alter: 43
Beiträge: 533


mqs eine Nachricht über ICQ schicken
Frage 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
____________________________________
http://www.schmausen.at
Dein Infoportal für Mittagsmenüs in Klagenfurt
mqs ist offline   Mit Zitat antworten
Alt 28.02.2002, 16:05   #2
ReiniBugman
Jr. Member
 
Registriert seit: 13.09.2001
Beiträge: 83


Standard

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 ist offline   Mit Zitat antworten
Alt 28.02.2002, 16:06   #3
ReiniBugman
Jr. Member
 
Registriert seit: 13.09.2001
Beiträge: 83


Standard

wie ich sehe sind die Formatierungen weg. Musst also selber einrücken.
ReiniBugman ist offline   Mit Zitat antworten
Alt 28.02.2002, 16:53   #4
pong
Inventar
 
Benutzerbild von pong
 
Registriert seit: 25.12.2000
Alter: 41
Beiträge: 9.063

Mein Computer

pong eine Nachricht über ICQ schicken
Standard

@ReiniBugman wennst das nächste mal den tag [code] verwendest bleibn die formatierungen erhalten
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug

Nicht klicken!


Erstposteralarm/Beschwerde/Kummerkasten


Verplattet
pong ist offline   Mit Zitat antworten
Alt 01.03.2002, 14:16   #5
mqs
Master
 
Registriert seit: 08.05.2001
Alter: 43
Beiträge: 533


mqs eine Nachricht über ICQ schicken
Standard

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
____________________________________
http://www.schmausen.at
Dein Infoportal für Mittagsmenüs in Klagenfurt
mqs ist offline   Mit Zitat antworten
Alt 01.03.2002, 15:02   #6
JosefS
Veteran
 
Registriert seit: 07.01.2002
Alter: 44
Beiträge: 268


Standard

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
JosefS ist offline   Mit Zitat antworten
Alt 01.03.2002, 15:09   #7
ReiniBugman
Jr. Member
 
Registriert seit: 13.09.2001
Beiträge: 83


Standard

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.
ReiniBugman ist offline   Mit Zitat antworten
Alt 01.03.2002, 17:25   #8
Sonic
Master
 
Registriert seit: 28.03.2000
Alter: 45
Beiträge: 691


Sonic eine Nachricht über ICQ schicken
Standard

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
____________________________________
__________________
|»»»»»SONIC««««««|
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Sonic ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:32 Uhr.


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