|
|
#1
|
|||
|
|||
Работа с wav
Здравствуйте уважаемые знатоки. Делаю программу для диплома ( в универе паскаль учили да и все) и столкнулся с трудностями. Есть рабочая программа на паскале, ее нужно переделать в делфи.
Суть программы заключается в считывании данных из *.wav и работа с ними. Но на этапе считывания wav столкнулся с проблемами, делфи говорит о выходе за пределы. Часть программы на паскале, где считывается .wav Код:
(var datafile : file of byte ) Assign(DataFile,ss[kd]+mpp+'.wav'); Reset(DataFile); seek(DataFile, 50); AAs[0]:=0; for i:=1 to k do A[i]:=0; for jj:=1 to jjk do begin for i := 1 to 4096 do begin Read(DataFile, Xx); X^[i]:=xx/1; end; моя попытка в делфи: Код:
AssignFile(DataFile,ss[kd]+mpp+'.wav'); Reset(DataFile, 1); AAs[0]:=0; for i:=1 to k do A[i]:=0; seek(DataFile, 50); for i:=1 to 4096 do begin blockread(Datafile,buf,1); X^[i]:=buf; end; Если кто может, огромная просьба помочь. Выскакивает ошибка на blockread(Datafile,buf,1); Read beyond end of file. Вроде бы как выходит за пределы. исправить не получается... Последний раз редактировалось lmikle, 14.03.2012 в 02:04. |
#2
|
||||
|
||||
Для начала заключи приведённый код в тег , затем приведи переменные которые используешь. При указанной переменной DataFile, нужно писать Reset(DataFile).
Если используется переменная DataFile того типа как сейчас приведена, то нужно испольбзовать Read. P.S. Как читал в старом добром Паскале, также читаешь и сейчас. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 14.03.2012 в 00:43. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
deniks (14.03.2012)
|
#3
|
|||
|
|||
Код:
unit pribor56; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) private { Private declarations } public { Public declarations } end; type mascp=array[1..4096] of single ; mask=array[0..4096] of single ; mascpptr=^mascp; maskd=array [0..10] of string; var Form1: TForm1; var xx: byte; datafile : file of byte; mpp:string; kd:longint; jj:integer; sabb, sgarm, ss: maskd; const jjk=2;{L=5;}n=12;pkr=100;fmax=11025/2; var dt,a,f,xk:mask; x,y:mascpptr; i,j,k,L: integer; implementation {$R *.dfm} begin mpp:='1'; ss[kd]:='1w'; Assign(DataFile,ss[kd]+mpp+'.wav'); Reset(DataFile); seek(DataFile, 50); for i:=1 to k do A[i]:=0; for jj:=1 to jjk do begin for i := 1 to 4096 do begin Read(DataFile, Xx); X^[i]:=xx/1; end;end; end. lmikle: Дальше буду карать!!! дальше такого не будет, спс Последний раз редактировалось deniks, 14.03.2012 в 09:19. |
#4
|
|||
|
|||
на строке Read(DataFile, Xx); как бы читаем из .wav по байту
выбивает ошибку, поэтому думал по другому считать, к чему пришел в 1м посте, но ошибка из 1го места переместилась в другое. Последний раз редактировалось deniks, 14.03.2012 в 01:45. |
#5
|
||||
|
||||
Вы собираетесь пользоваться тегом [code]? Пока не исправите ответа не ждите.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#6
|
|||
|
|||
сори.. не знал ваших правил оформления. модер уже подправил
|