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

Вниз

Извлечение ресурсов.   Найти похожие ветки 

 
Igit ©   (2003-07-13 12:34) [0]

Добавил я в программу htm файл в RCDATA, теперь мне надо извлечь его, но выходят ошибки. код ьакой:

var
ResStream : TResourceStream;
htm: Tstrings;

.....
ResStream := nil;
try
ResStream := TResourceStream.CreateFromID(handle, 1, RT_RCDATA);
htm.LoadFromStream(ResStream);
htm.SaveToFile("C:\tmp.tmp");
finally
htm.Free;
ResStream.Free;
end;


в рес-редакторе смотрел, есть там мой ресурс, в RCDATA, "1" называется....


 
wicked ©   (2003-07-13 17:51) [1]

ну а текст ошибки?....
и в какой строке вываливается?.....


 
Юрий Зотов ©   (2003-07-13 18:01) [2]

1. Вы передаете хэндл окна, а нужен хэндл приложения:
CreateFromID(HInstance, ...

2. Если "1" - имя ресурса, то надо использовать просто Create.



 
Igit ©   (2003-07-14 15:51) [3]

поменял handle на HInstance, но теперь при отладке видно, что
ResStream = ()
htm = ()... и вылетает когда я хочу

2Юрий Зотов
подскажите как реализовать 2.


 
Юрий Зотов ©   (2003-07-14 17:10) [4]

> Igit © (14.07.03 15:51)

Вообще-то, это есть в справке:
ResStream := TResourceStream.Create(HInstance, "1", RT_RCDATA);

И еще - зачем еще какие-то Htm: TStrings? У самого ResStream есть метод SaveToFile и не нужно никаких посредников. Весь код сводится к простому with:

with TResourceStream.Create(HInstance, "1", RT_RCDATA) do
try
SaveToFile("C:\tmp.tmp")
finally
Free
end;

И больше ничего не требуется.


 
Igit ©   (2003-07-14 17:42) [5]

Извини что задаю глупые вопросы, но я не знаю ни одного человека знающего дельфи, си... на книги средств нет... вернее книги есть но работа с ресурсами там не описана, и всегда когда что-то новое узнаешь, собираешь инфу из первых попавшихся факов и пытаешься реализовать... получается с ошибками, а когда не знаешь в чем ошибка, то не знаешь что искать в хелпе.

Спасибо за разъяснения.


 
Igit ©   (2003-07-14 18:14) [6]

Теперь ошибка, что ресурса нет... хотя он есть только что проверил eXeScop"om, добавлял его так:

=========info.rc======
1 RCDATA "info.htm"
=====info_make.bat======
BRCC32 info.RC

все правильно, но неработает...


 
Skier ©   (2003-07-14 18:17) [7]

>Igit © (14.07.03 18:14)
Ресур подключен ?
{$R "Your file"}.



 
Igit ©   (2003-07-14 20:11) [8]

Да.


 
Igit ©   (2003-07-14 20:37) [9]

Вот сырец (2 kb) c примером, там ошибка, мол нету такого ресурса
http://bzdun2.narod.ru/1.zip
Заранее благодарен...


 
Fantasist.   (2003-07-15 01:54) [10]


> 1 RCDATA "info.htm"


Так у тебя ID получается. Используй:


with TResourceStream.CreateFromID(handle, 1, RT_RCDATA) do
try
SaveToFile("C:\tmp.tmp")
finally
Free
end;


 
Igit ©   (2003-07-15 07:30) [11]

2Fantasist.
у меня с этим и были проблемы с самого начала, все компилится, но приз апуске вылетает: "Project Progect1.exe raised exception class EAccesViolation with message..."


 
AbrosimovA ©   (2003-07-15 09:50) [12]

Сделал как приведено ниже, всё работает, но мне пришлось создать свой файл ресурсов с твоей страницей, у тебя нехороший файл info.res.
Я создал файл ресурсов с помощью Restorator.


program Project1;

uses
Forms, Classes, Windows,
Unit1 in "Unit1.pas" {Form1};

{$R *.res}
{$R info.res}

var ResStream : TResourceStream;

begin
ResStream:=TResourceStream.CreateFromID(hInstance, 1, "HTML");
ResStream.SaveToFile("C:\tmp.tmp");
ResStream.Free;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
OleCtrls, SHDocVw, StdCtrls, ExtCtrls, Buttons;

type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
private

{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation



{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
var Flags: OLEVariant;
begin
Flags := navNoReadFromCache;
WebBrowser1.Navigate(WideString("C:\tmp.tmp"), Flags, Flags, Flags, Flags);
end;

end.


 
Igit ©   (2003-07-15 10:22) [13]

>AbrosimovA © (15.07.03 09:50)
Я создал ресторатором такой файл:
|============|
|[-]info.res |
| |-[-]html |
| |-1 |
|============|
в 1 мой info.htm... но не работает, если не удалил вышли мне пожалуйста свой res-файл. mailto:6543210@list.ru


 
AbrosimovA ©   (2003-07-15 10:26) [14]

Уже выслал полностью проект. Если все нормально, напиши.


 
AbrosimovA ©   (2003-07-15 10:29) [15]

Ещё. Заметь разницу res-файлов при отображении в рестораторе.


 
Igit ©   (2003-07-15 14:00) [16]

Понятно, у того места куда толкаешь htm тип должен быть текстовый!
Спасибки, большие :)



Страницы: 1 вся ветка

Текущий архив: 2003.07.28;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.011 c
4-91949
Mr. API
2003-05-23 07:34
2003.07.28
ListView на WinAPI


1-91710
` frizZ. `
2003-07-14 18:41
2003.07.28
Активный thread ?!


14-91836
Hollywood
2003-07-10 19:10
2003.07.28
А как вообще зарегистрироваться на этом форуме?


14-91809
Лана Розанова
2003-07-10 10:43
2003.07.28
Перевод


3-91648
McSimm2
2003-07-03 16:30
2003.07.28
[Oracle] вернуть