Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
funkeld gesperrt
Anmeldungsdatum: 10.10.2009 Beiträge: 179
|
Verfasst am: 26.02.2010, 10:18 Titel: Text in ein Mempointer schreiben |
|
|
Dim Shared As Byte Ptr Buffer
Buffer = callocate(2000)
Wie kann ich hier den Text "WAVE" und "data" jeweils so als Textausdruck in einem Stück reinbringen.
Danke.
Gruss |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 26.02.2010, 10:55 Titel: |
|
|
du kannst den pointer nach zstring pointer casten. oder du füllst ihn zeichen für zeichen (buffer[0] = ASC("W")). Oder du benutzt memcpy aus der crt, um zeichenblöcke hin- und her zu kopieren. Oder... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 26.02.2010, 12:47 Titel: |
|
|
oder
Code: | Cast(UInteger Ptr, Buffer)[0] = Cvi("RIFF")
...
Cast(UInteger Ptr, Buffer)[2] = Cvi("WAVE")
Cast(UInteger Ptr, Buffer)[3] = Cvi("fmt ")
|
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
funkeld gesperrt
Anmeldungsdatum: 10.10.2009 Beiträge: 179
|
Verfasst am: 27.02.2010, 19:20 Titel: |
|
|
Code: |
dim shared as byte ptr buffer
|
Ich brauche ein buffer, der verschiedene Variablen aufnimmt, daher muss ich die kleinste Einheit nehmen.
Wenn ich jetzt ein Byte schreibe muss ich ja immer um 1 addieren.
Kann ich jetzt zum Beispiel bei buffer[2] eine 4Byte Integer reinsetzen und wird die Integer dort richtig reingesetzt?
Und ab buffer[6] wieder 1Byte?
Gruss |
|
Nach oben |
|
 |
funkeld gesperrt
Anmeldungsdatum: 10.10.2009 Beiträge: 179
|
Verfasst am: 27.02.2010, 19:54 Titel: |
|
|
Warum kommt hier eine Fehlermeldung:
Invalid data types, found 'As' in 'c =Peek(Short,test[4]) As Short'
Syntax: PEEK ([Datentyp,] Adresse) AS Datentyp
Code: |
Dim Shared As Short a,c
Dim AS BYTE PTR test= Allocate( 100 )
Screen 19,32
a=-23444
CAST(UINTEGER PTR, test)[0] = CVI("RIFF")
test[4]=a
Print chr(test[0]);chr(test[1]);chr(test[2]);chr(test[3])
c =Peek(Short,test[4]) as short
Sleep
|
|
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 27.02.2010, 20:08 Titel: |
|
|
"test" ist ein BYTE PTR, für eine SHORT-Variable der falsche Type.
Code: | ...
c = CAST(SHORT PTR, test)[2]
'oder
c = Peek(Short, CAST(SHORT PTR, test+4)) as short |
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
funkeld gesperrt
Anmeldungsdatum: 10.10.2009 Beiträge: 179
|
Verfasst am: 27.02.2010, 20:32 Titel: |
|
|
Wie bekomme ich dann eine short oder integer in diesen Byte-buffer rein?
Wie gesagt ich brauch diese Mischform.
Gruss |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 27.02.2010, 21:18 Titel: |
|
|
Code: | 'Offset bytes Inhalt
'0 4 'RIFF'
Cast(UInteger Ptr,Buffer)[0] = Cvi("RIFF")
'4 4 <Dateigröße - 8>
Cast(UInteger Ptr,Buffer)[4\4] = <Dateigröße - 8>
'8 4 'WAVE'
Cast(UInteger Ptr,Buffer)[8\4] = Cvi("WAVE")
'
'Der fmt-Abschnitt beschreibt das Format
'12 4 'fmt ' Header-Signatur
Cast(UInteger Ptr,Buffer)[12\4] = Cvi("fmt ")
'16 4 <fmt length> Länge des restlichen fmt-Headers (16 Byte)
Cast(UInteger Ptr,Buffer)[16\4] = 16
'20 2 <format tag> Datenformat der Abtastwerte
Cast(Short Ptr,Buffer)[20\2] = 1 'PCM = 1
'22 2 <channels> Anzahl der Kanäle: 1 = mono, 2 = stereo
Cast(Short Ptr,Buffer)[22\2] = 1 'mono
'24 4 <sample rate> Abtastrate pro Sekunde (z.B. 44100)
Cast(UInteger Ptr,Buffer)[24\4] = 44100
'28 4 <bytes/second> Abtastrate * Block-Align
'32 2 <block align> <channels> * (<bits/sample> / 8) (Division ohne Rest)
'34 2 <bits/sample> 8, 16 oder 24
'36 4 'data' Header-Signatur
Cast(UInteger Ptr,Buffer)[36\4] = Cvi("data")'data hier klein geschrieben!
'40 4 <length> Länge des Datenblocks
'44 1 der erste Abtastwert
Buffer[44] = xxx |
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
funkeld gesperrt
Anmeldungsdatum: 10.10.2009 Beiträge: 179
|
Verfasst am: 28.02.2010, 00:50 Titel: |
|
|
Jup, sieht gut aus.
Danke.
Gruss |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 28.02.2010, 01:40 Titel: |
|
|
Warum nimmst du nicht einfach ein TYPE, um den Header auszufüllen? Ist wesentlich weniger umständlich. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
|
Nach oben |
|
 |
funkeld gesperrt
Anmeldungsdatum: 10.10.2009 Beiträge: 179
|
Verfasst am: 28.02.2010, 14:24 Titel: |
|
|
Ist auch gut in der Durchführung.
GRuss |
|
Nach oben |
|
 |
|