Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.23;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
14-72873
Zombik666
2004-01-03 17:00
2004.01.23
x+=5 - это Паскаль или НЕ Паскаль?


1-72782
Alexey K
2004-01-13 09:58
2004.01.23
Подскажите максимальный допустимый размер exe-шника


1-72701
fame
2004-01-14 11:41
2004.01.23
Исчезают компоненты типа BitBtn!?


4-72968
DillerXX
2003-11-18 20:15
2004.01.23
Пищалка


3-72649
Dr.sam
2003-12-26 11:12
2004.01.23
Select из нескольких таблиц