Мне нужно возвести массив данных Wav файла в степень, затем из возведенных значений взять остаток от целочисленного деления(типа mod) и записать их обратно в wav файл. Вот неполный листинг, подскажите пожалуйста ошибку: Код | .. uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Math, UMathServices{Модуль Vit'a}; .. procedure RSACript(p: pointer;WavSize:integer); var i,n,e,j, stp : integer; WavFile: PStringArray; str:array [1..400] of string; begin WavFile:=PStringArray(p^); e:=1; n:=21; for i:=56 to 100 do begin Application.ProcessMessages; str[i]:=UlDiv((ulPower(WavFile[i], IntToStr(e))), IntToStr(n), 100); end; for i:=56 to 400 do stp:=pos('.',str[i]); for i:=1 to 400 do delete(str[i],1,stp); for i:=56 to 400 do begin for j:=1 to length(str) do
WavFile[i]:=str[j]; end; end;
procedure TMainForm.Button1Click(Sender: TObject); var WAVFile: array of string; WAVOFStruct: TOFStruct; hWav, hMod: THandle; WavSize,i: Integer; BytesRead, BytesWrite: Dword;
begin ZeroMemory(@WAVOFStruct, SizeOf(WAVOFStruct)); hWav:= OpenFile(PChar(WavFileName), WavOFStruct, OF_READWRITE); if hWav = HFILE_ERROR then RaiseLastWin32Error; try WavSize:= GetFileSize(hWav, nil); SetLength(WAVFile, WavSize); ReadFile(hWav, WAVFile[0], WavSize, BytesRead, nil); p:=@WavFile;
RSACript(p,Wavsize);
hMod:= CreateFile('NewPath1.wav', GENERIC_WRITE, 0, nil, CREATE_ALWAYS, 0, 0); if hMod = INVALID_HANDLE_VALUE then RaiseLastWin32Error; try WriteFile(hMod, WavFile[0], WavSize, BytesWrite, nil); finally CloseHandle(hMod); end; finally _lclose(hWav); end; end;
|
|