![]() |
|
|
|
|
#1
|
|||
|
|||
|
Здравствуйте уважаемые знатоки. Делаю программу для диплома ( в универе паскаль учили да и все) и столкнулся с трудностями. Есть рабочая программа на паскале, ее нужно переделать в делфи.
Суть программы заключается в считывании данных из *.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. Как читал в старом добром Паскале, также читаешь и сейчас. Последний раз редактировалось 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]? Пока не исправите ответа не ждите.
|
|
#6
|
|||
|
|||
|
сори.. не знал ваших правил оформления. модер уже подправил
|