Форум: "Основная";
Текущий архив: 2002.06.24;
Скачать: [xml.tar.bz2];
ВнизПочему не работает ? Найти похожие ветки
← →
VID (2002-06-12 20:09) [0]При выполнении кода получаю Access Violation.
Причём, интересно то, что выполняются все операторы код, а Access Violation выдаётся при выходе из процедуры (так кажется).
А вот и виновник "торжества":
procedure TForm1.ReadClick(Sender: TObject);
Var Buffer:array of Char;
FileStream:TFileStream;
begin
Try
FileStream := TFileStream.Create (FileName.FileName,fmOpenRead);
Except
ShowMessage("File access error, or the specified file does not exists"); exit;
end;
try
FileStream.Seek(ReadFrom.Value, soFromBeginning);
except
FileStream.Free;
ShowMessage("Error occured while position tracking in the specified file"); Exit;
End;
try
SetLength(Buffer, Offset.value);
FileStream.ReadBuffer(buffer, SizeOf(Buffer));
Finally
FileStream.Free;
Buffer := nil;
end;
// RD: TMEMO
RD.TEXT :=String(Buffer);
end;
← →
yozhik (2002-06-12 20:16) [1]мне кажется ошибка в следующем...
RD.TEXT :=String(Buffer); - надо поставить перед Buffer := nil;
← →
VID (2002-06-12 20:27) [2]Я поставил конечно, и проверил... Access Violation. Но вообще-то по-логике, там как раз таки и не надо ставить Buffer := nil, поскольку в этом случае, я потеряю всю инфу, что была в буффере, а она мне вообще-то нужна, для отображения в RD (TMemo)...
Ищем дальше...
← →
VID (2002-06-12 20:29) [3]упс... пардон :) просто не правильно понял с первого раза :)
Я поставил Buffer := nil, после RD.TEXT := String(Buffer), но к сожалению, всё равно AV...
← →
MBo (2002-06-12 21:03) [4]try убрал для краткости
procedure TForm1.ReadClick(Sender: TObject);
Var Buffer: String;
FileStream:TFileStream;
begin
FileStream := TFileStream.Create (FileName.FileName,fmOpenRead);
FileStream.Seek(ReadFrom.Value, soFromBeginning);
SetLength(Buffer, Offset.value);
//Offset.value- что это?
//по названию больше похоже на смещение, а не на размер коп. блока
FileStream.ReadBuffer(buffer[1], Offset.value);
RD.TEXT :=Buffer;
FileStream.Free;
end;
← →
Sasha9 (2002-06-12 21:08) [5]вообще-то непонятно зачем ты очищаешь буфер....
а ошибок у тебя несколько:
1.ReadBuffer исползуется только когда SizeOf(Buffer) величина постоянная, используй просто Read
2.В Read параметр должен быть не Buffer а Buffer[0], на эту ошибку компилятор ругаться не будет, если хош объясню почему.
А вообще-то незачем так геморроиться, memo1.Lines.LoadFromFile();, или LoadFromStream
← →
VID (2002-06-12 21:29) [6]TO Mbo: спасибо... offset.value - это просто количество байтов, необходимых для считывания из файла. Указывается пользователем.
И ещё, почему FileStream.ReadBuffer(buffer [1], Offset.Value)?
А вообще, Sasha9, дал мне понять, что я не на верном пути :)
Задача такая:
ДАНО: есть файл. Не текстовый, а какой-нить exe, или wave.
ЦЕЛЬ: прочитать в буффер какой-то фрагмент файла, и сохранить этот фрагмент в новый файл.
Просто у меня есть огромный файл с сэмплами (кусочки аудио звука), и я знаю, где в нём (с какого байта) начинается каждый новый сэмпл, и длину сэмпла в байтах. Вот и хочу разобрать этот big файл по частям.
← →
VID (2002-06-12 21:42) [7]TO ALL: Цель достигнута. Задача выполнена.
TO MBo: Однако, вопрос насчёт FileStream.ReadBuffer(buffer[1], Offset.Value) остаётся открытым :)
← →
MBo (2002-06-13 07:29) [8]FileStream.ReadBuffer читает из файла, записывая данные, начиная с адреса, указанного первым параметром. buffer[1] - как раз первый символ строки.
← →
Yuri-7 (2002-06-13 08:40) [9]Зачем так сложно хранить сэмплы? Сохрани их как ресурсы RCDATA в EXE-шнике и считывай потом в TResourceStream и делай с ними что хочешь.
← →
Игорь Шевченко (2002-06-13 10:45) [10]VID © (12.06.02 21:29)
Просто у меня есть огромный файл с сэмплами (кусочки аудио звука), и я знаю, где в нём (с какого байта) начинается каждый новый сэмпл, и длину сэмпла в байтах. Вот и хочу разобрать этот big файл по частям.
Использовать MemoryMapped files - rulez forever для таких задач.
Не будет никакого геморроя.
С уважением,
← →
Sasha9 (2002-06-13 15:08) [11]MBo ©
тока не buffer [1] а buffer [0]
← →
Sasha9 (2002-06-13 15:11) [12]2VID ©
я не понял, а зачем тогда тебе МЕМО
← →
MBo (2002-06-13 15:22) [13]>Sasha9
у меня это String
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.06.24;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c