![]() |
Algorithmus von C99 in Delphi übersetzen
Hi @all,
ich wollte fragen ob mir jemand folgenden Algorithmus von C99 in Delphi übersetzen kann: ![]() Ich hab mich schon ein wenig dran versucht, bin jedoch nicht mit der Syntax dieser Sprache vertraut... Daher dachte ich mir, dass ich mal in diesem Forum nachfrage. Der Codeausschnitt ist ja auch nicht übermäßig lang ;) mfg Rer |
Re: Algorithmus von C99 in Delphi übersetzen
Wie sieht denn dein Versuch derzeit aus?
Einfach den Code soweit wie möglich übersetzen und dann können wir ja mal sehn, wie wir dir bei den fehlenden bzw. noch nicht übersetzten Stellen helfen können :) |
Re: Algorithmus von C99 in Delphi übersetzen
Ich sehe es wie himitsu. Ein Forum ist da um zu helfen und nicht um für andere die komplette Arbeit zu machen.
Vor allem lernst du rein gar nichts wenn es immer Andere machen statt das du es selbst versuchst und dann nur bei konkreten Problemen nachfragst. |
Re: Algorithmus von C99 in Delphi übersetzen
so weit bin ich bis jetzt^^
Delphi-Quellcode:
Nun steht in den nächsten Zeilen bei wikipedia:
type
ADX_HEADER = packed record Begin_0x80 : Byte; Begin_0x00 : Byte; crOffset : Word; encType : Byte; blockSize : Byte; smplbitdpth: Byte; NumChannels: Byte; sampleRate : LongWord; totalSamples: LongWord; hpfrequency: Word; Version : Byte; flags : Byte; end; ADX_LOOP_V3 = packed record loopEnabled: LongWord; loopBegSamInd:LongWord; loopBegBytInd:LongWord; loopEndSamInd:LongWord; loopEndBytInd:LongWord; end; ADX_LOOP_V4 = packed record loopEnabled: LongWord; loopBegSamInd:LongWord; loopBegBytInd:LongWord; loopEndSamInd:LongWord; loopEndBytInd:LongWord; end; {...} var Form1 : TForm1; adxhdr : ADX_HEADER; adxloopv3 : ADX_LOOP_V3; adxloopv4 : ADX_LOOP_V4; function READ_HEADER(efile:string):boolean; function read_loopv3(efile:string):boolean; function read_loopv4(efile:string):boolean; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var M_PI : double; a,b,c : double; coefficient: array [0..1] of double; begin READ_HEADER('c:\MeineDatei.adx'); if adxhdr.Version=3 then read_loopv3('c:\MeineDatei.adx') else if adxhdr.Version=4 then read_loopv4('c:\MeineDatei.adx'); //-------> coefficients must be calculated M_PI:=ArcCos(-1.0); a := sqrt(2.0) - cos(2.0 * M_PI * (adxhdr.hpfrequency/adxhdr.sampleRate)); b := sqrt(2.0) - 1.0; c := (a - sqrt((a + b) * (a - b))) / b; // double coefficient[2]; coefficient[0] := c * 2.0; coefficient[1] := -(c * c); end; function READ_HEADER(efile:string):boolean; var edat : file; buffer : array [0..$FFFF] of byte; gelesen : integer; begin result:=false; assignfile(edat,efile); reset(edat,1); blockread(edat,buffer,sizeof(adxhdr),gelesen); move(buffer[0],adxhdr,sizeof(adxhdr)); if (adxhdr.Begin_0x80=128) and (adxhdr.Begin_0x00=0) then begin result:=true; end; closefile(edat); end; function read_loopv3(efile:string):boolean; var edat : file; buffer : array [0..$FFFF] of byte; gelesen : integer; begin result:=false; try assignfile(edat,efile); reset(edat,1); seek(edat, 24); blockread(edat,buffer,sizeof(adxloopv3),gelesen); move(buffer[0],adxloopv3,sizeof(adxloopv3)); finally result:=true; closefile(edat); end; end; function read_loopv4(efile:string):boolean; var edat : file; buffer : array [0..$FFFF] of byte; gelesen : integer; begin result:=false; try assignfile(edat,efile); reset(edat,1); seek(edat, 36); blockread(edat,buffer,sizeof(adxloopv3),gelesen); move(buffer[0],adxhdr,sizeof(adxloopv3)); finally result:=true; closefile(edat); end; end; end.
Code:
Sieht für mich wie eine Variablendeklaration aus. Ich weiß jedoch nicht was da genau gemacht wird.
static int32_t* past_samples;
static uint_fast32_t sample_index = 0; static ADX_header* adx_header; Außerdem werden zwischendurch die funktionen "ntohs" und "sign_extend" verwendet... mit denen kann ich ebenfalls nichts anfangen. Gibt es gleichbedeutende funktionen bei Delphi?
Code:
fortsetzung folgt :-P
scale[i] = ntohs( bitstream_read( 16 ) );
sample_error = sign_extend( sample_error, adx_header->sample_bitdepth ); mfg Rer |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz