Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi String zu PChar in mciSendString klappt nicht (https://www.delphipraxis.net/145492-string-zu-pchar-mcisendstring-klappt-nicht.html)

jdm 2. Jan 2010 19:11


String zu PChar in mciSendString klappt nicht
 
In der untenstehenden Procedure erhalte ich den Fehler:
Got "AnsiString", expected "PChar"

bezogen auf diese Zeile:
PChar('ALIGNMENT ' +IntToStr(Channels*round(BitsPerSample/8))),

Ich war der Meinung PChar() würde reichen. Wo ist der Fehler?



Delphi-Quellcode:
procedure Aufnehmen(SamplesPerSec, BitsPerSample: integer);
var
Channels: integer;
begin
if Form1.RadioButton1.Checked=True
then Channels:=1
else Channels:=2;

mciSendString('OPEN NEW TYPE WAVEAUDIO ALIAS mysound',nil,0,Handle);
mciSendString('SET mysound ' +
'TIME FORMAT MS ' +
PChar('BITSPERSAMPLE '+IntToStr(BitsPerSample)+' ') +
PChar('CHANNELS '    +IntToStr(Channels)+' ') +
PChar('SAMPLESPERSEC '+IntToStr(SamplesPerSec)+' ') +
PChar('BYTESPERSEC ' +IntToStr(SamplesPerSec*Channels*round(BitsPerSample/8))+' ') +
PChar('ALIGNMENT '   +IntToStr(Channels*round(BitsPerSample/8))),
              nil,0,handle);
mciSendString('RECORD mysound',nil,0,Handle);
end;

himitsu 2. Jan 2010 19:37

Re: String zu PChar in mciSendString klappt nicht
 
String + PChar + PChar = String

Delphi-Quellcode:
mciSendString(PChar('SET mysound ' +
'TIME FORMAT MS ' +
'BITSPERSAMPLE '+IntToStr(BitsPerSample)+' ' +
'CHANNELS '    +IntToStr(Channels)+' ' +
'SAMPLESPERSEC '+IntToStr(SamplesPerSec)+' ' +
'BYTESPERSEC ' +IntToStr(SamplesPerSec*Channels*round(BitsPerSample/8))+' ' +
'ALIGNMENT '   +IntToStr(Channels*round(BitsPerSample/8)),
              nil,0,handle);
PS: mit Delphi-Referenz durchsuchenFormat ginge es womöglich Schöner, Übersichtlicher und/oder zumindestens Effizienter
Delphi-Quellcode:
mciSendString(PChar(Format('SET mysound TIME FORMAT MS ' +
  'BITSPERSAMPLE %d CHANNELS %d SAMPLESPERSEC %d BYTESPERSEC %d ALIGNMENT %d',
  [BitsPerSample, Channels, SamplesPerSec, SamplesPerSec * Channels
  * (BitsPerSample div 8), Channels * (BitsPerSample div 8)])), nil, 0, Handle);


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:57 Uhr.

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