Форум: "Основная";
Текущий архив: 2004.01.23;
Скачать: [xml.tar.bz2];
ВнизStream и файл ресурсов. Проблеммы. Найти похожие ветки
← →
Checker (2004-01-13 13:55) [0]Уважаемые мастера, я никогда не работал с ресурсами, но вот возникла необходимость запихать некоторый файл в тело проекта и работать с ним (файл bin, открывать надо только для чтения). Как всегда надо это уже вчера. Времени досконально разбираться с этим на данном этапе просто нет. Я попытался найти что-нибудь на эту тему и самое доступное, что я нашел, лежит по адресу
http://delphiclub.ru/myfaq/21092003.php
Я сделал все, как там описано.
Вот текст файла data.rc
DAT RT_RCDATA FILENAME.BIN
Объявление переменной, создание потока и освобождение ресурсов естественно (!) точно такое же как и в примере, НО!... Хоть убейте я не пойму, как мне грамотно организовать чтение.
Вот кусок кода, который у меня был, когда файл был не ресурсом(в смысле не *.res)
Seek(F,k);
Read(F,Bt);
Помогите переделать под *.res.
Заранее благодарен.
← →
Checker (2004-01-13 14:03) [1]Забыл указать, что в ссылке вопрос третий по счету
← →
alex_*** (2004-01-13 14:05) [2]rc file:
1 RCDATA FILENAME.BIN
res := TResourceStream.CreateFromID(hInstance,1,RT_RCDATA);
...
← →
Checker (2004-01-13 14:08) [3]>>alex_*** ©
Это все есть в примере на который я давал ссылку. Я просто не стал переписывать тоже самое. Но непонятно то как раз, как имея в RES файле файл BIN, читать из него...
← →
Юрий Зотов (2004-01-13 14:35) [4]Возможный вариант:
with TResourceStream.Create(HInstance, "DAT", RT_RCDATA) do
try
Seek(k * SizeOf(Bt), soFromBeginning);
Read(Bt, SizeOf(Bt))
finally
Free
end;
← →
alex_*** (2004-01-13 14:36) [5]DAT RT_RCDATA FILENAME.BIN замени на RCDATA.
В смысле как считывать? Я же тебе показал: через TResourceStream
← →
Checker (2004-01-13 14:52) [6]Было ...
For i:=1 to 48 do
begin
for k:=begByte to BegByte+511 do
begin
Seek(f,kk);
Read(f,bt);
DatStr:=DatStr+chr(bt);
end;
end;
Стало...
RS := TResourceStream.Create(HInstance, "DAT", "RT_RCDATA");
For i:=1 to 48 do
begin
for k:=begByte to BegByte+511 do
begin
try
RS.Seek( ????, ????);
RS.Read( ????, ????);
DatStr:=DatStr+chr(bt);
finally
end;
end;
RS.Free;
← →
Checker (2004-01-13 14:54) [7]Простите, конечно вот так
For i:=1 to 48 do
begin
for k:=begByte to BegByte+511 do
begin
Seek(f,kk);
Read(f,bt);
DatStr:=DatStr+chr(bt);
end;
end;
← →
Checker (2004-01-13 14:55) [8]Еще раз сорри :))))
For i:=1 to 48 do
begin
for k:=begByte to BegByte+511 do
begin
Seek(f,k);
Read(f,bt);
DatStr:=DatStr+chr(bt);
end;
end;
← →
alex_*** (2004-01-13 14:56) [9]ну и работает?
← →
Checker (2004-01-13 15:01) [10]>>alex_*** ©
RS.Seek(????,????);
RS.Read(????,????);
:)
← →
alex_*** (2004-01-13 15:05) [11]ну так убери "????" )) в чем проблема? Как правильно метод Read у RS вызвать не знаешь?
← →
Checker (2004-01-13 15:07) [12]>>alex_*** ©
"Checker (13.01.04 13:55) ...я никогда не работал с ресурсами..."
← →
Юрий Зотов (2004-01-13 15:11) [13]> Checker (13.01.04 15:07) [12]
Вы, вообще-то, ответы читаете?
Просто интересно.
← →
alex_*** (2004-01-13 15:12) [14]ну и что? с потомками TStream работал? Работа с ресурсами закончилась, когда ты вызвал TResourceStream.Create(HInstance, "DAT", RT_RCDATA);
← →
Checker (2004-01-13 15:16) [15]Всем спасибо, в частности alex_*** ©
Я разобрался, тормозил просто... да и чего уж скрывать... лень было разбираться :( :)))
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.01.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c