Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Wav Datei in den Speicher laden... möglw. Pointer Problem (https://www.delphipraxis.net/50694-wav-datei-den-speicher-laden-moeglw-pointer-problem.html)

Six 29. Jul 2005 19:13


Wav Datei in den Speicher laden... möglw. Pointer Problem
 
Hallo,

Also, ich möchte die Funktion "CreatePCMMemoryFromFile(PAnsiChar,PWaveFormatEx,P Integer)", der Sound.dll von fAlter benutzen, um eine Wav Datei in den Speicher zu laden (zur weiteren Bearbeitung).

Das klappt auch ohne weiteres zum Beispiel folgendermaßen:

xy := CreatePCMMemoryFromFile('c:\xy.wav',@FormatStereo, @Size);

Der erste Parameter sollte aber durch einen OpenDialog gefüllt werden und hier ergibt sich plötzlich ein Problem:

Data5 := CreatePCMMemoryFromFile(@LiedDateiName,@FormatSter eo,@Size);

Obwohl in "LiedDateiName", genau der gleiche Pfad angegeben ist, wie im ersten Beispiel, lese ich bei der Ausgabe:

PlayPCMMemory(Data5, FormatStereo, Size * 2, nil);

für "Data5" nur "nil", also sind aus irdend einem Grund keine Daten verfügbar (wie gesagt, wenn ich den Pfad direkt angebe funktioniert es aber ohne Probleme).

Habe schon alle möglichen Varianten ausprobiert und bin langsam aber sicher am verzeifeln :(

Wer kann mir helfen?

Gruß

Six

marabu 29. Jul 2005 19:23

Re: Wav Datei in den Speicher laden... möglw. Pointer Proble
 
Hallo Six,

muss das nicht so aussehen:

Delphi-Quellcode:
Data5 := CreatePCMMemoryFromFile(PChar(LiedDateiName), @FormatStereo, @Size);
Grüße vom marabu

Six 29. Jul 2005 19:56

Re: Wav Datei in den Speicher laden... möglw. Pointer Proble
 
Hi Marabu,

es scheint auf jeden Fall ein Schritt in die richtige Richtung zu sein, denn in Data5 steht nach dieser Prozedur tatsächlich "etwas" drin.

Leider produziert das Ganze jedoch eine Zugriffsverletzung und es wird auch kein Sound abgespielt :(

Hast du noch eine andere Idee?

Gruß

Six

marabu 29. Jul 2005 20:01

Re: Wav Datei in den Speicher laden... möglw. Pointer Proble
 
Ja - ich kenne zwar die Function nicht, aber wenn die Parameter 2 und 3 call bei reference wollen, dann muss der Address-Operator @ weg...

marabu

Six 29. Jul 2005 20:07

Re: Wav Datei in den Speicher laden... möglw. Pointer Proble
 
Also meinst du:

Data5 := CreatePCMMemoryFromFile(LiedDateiName,@FormatStere o,@Size);

und/oder

Data5 := CreatePCMMemoryFromFile(PChar(LiedDateiName),@Form atStereo,@Size); ?

Beides schon probiert :?

LiedDateiName ist ersetzbar durch:

OpenDialog.FileName; (String)
OpenDialog.Files.GetText; (pChar)

Six

Die Muhkuh 29. Jul 2005 20:08

Re: Wav Datei in den Speicher laden... möglw. Pointer Proble
 
ich glaube, er meint das so:

Delphi-Quellcode:
Data5 := CreatePCMMemoryFromFile(PChar(LiedDateiName),FormatStereo,Size);

Six 29. Jul 2005 20:16

Re: Wav Datei in den Speicher laden... möglw. Pointer Proble
 
Die Restlichen Parameter sind richtig,

wie gesagt, es läuft ja, wenn ich für den ersten Parameter bspw. "c:\a.wav" einsetzte...
Das einzige Problem ist der erste Parameter...

Die Muhkuh 29. Jul 2005 20:18

Re: Wav Datei in den Speicher laden... möglw. Pointer Proble
 
Eigentlich sollte dann ja das gehen:

Delphi-Quellcode:
Data5 := CreatePCMMemoryFromFile(PChar(OpenDialog1.FileName),@FormatStereo,@Size);

marabu 29. Jul 2005 20:25

Re: Wav Datei in den Speicher laden... möglw. Pointer Proble
 
@Spider: genau so sehe ich dass auch, nachdem ich mir die function mal angesehen habe. Eventuell sind die beiden Variablen Size und FormatStereo nicht korrekt belegt...

marabu

Six 29. Jul 2005 20:31

Re: Wav Datei in den Speicher laden... möglw. Pointer Proble
 
Ja, stimmt, es sollte eigentlich funktionieren...

Hm, dass "format" und "size" falsch belegt sind, kann ich mir auch nicht vorstellen, da es bei ähnlichen funtionen genau so aussieht (hier wird der Ton "frisch" erzeugt) und es ja auch funktioniert, wenn ich den ersten Parameter mit 'bla' ausfülle.

So hab ichs auch schon getestet:
Data5 := CreatePCMMemoryFromFile(PChar(OpenDialog1.FileName ),@FormatStereo,@Size);

Klappt aber auch nciht, Zugriffsverletzung :(

Six


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:22 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz