sajioo
دوشنبه 25 مهر 1390, 11:23 صبح
سلام دوستان گرامی
من یک فایل pdf را ریسورس کردم ، و می خوام اون فایل رو توسط کامپوننت acropdf نشان بدم.
برای نشان دادن pdf معمولی از کد
AcroPDF1.LoadFile('D:\delphi program\resorce\password1.pdf');
استفاده می کنم.
اما من چون فایل pdf مورد نظرم رو به صورت ریسورس کردم و به آن یک اشاره گر وصل کردم وقتی از نام اشاره گر استفاده می کنم ارور میده که باید از رشته استفاده کنید.
آیا راهی برای حل این مشکل است؟
کد برنامه من به صورت زیر است.
var
Form1: TForm1;
pdfo: pointer;
implementation
function GetResourceAsPointer(ResName: pchar; ResType: pchar;
out Size: longword): pointer;
var
InfoBlock: HRSRC;
GlobalMemoryBlock: HGLOBAL;
begin
InfoBlock := FindResource(hInstance, resname, restype);
if InfoBlock = 0 then
raise Exception.Create(SysErrorMessage(GetLastError));
size := SizeofResource(hInstance, InfoBlock);
if size = 0 then
raise Exception.Create(SysErrorMessage(GetLastError));
GlobalMemoryBlock := LoadResource(hInstance, InfoBlock);
if GlobalMemoryBlock = 0 then
raise Exception.Create(SysErrorMessage(GetLastError));
Result := LockResource(GlobalMemoryBlock);
if Result = nil then
raise Exception.Create(SysErrorMessage(GetLastError));
end;
{$R *.dfm}
{$R file4.res}
procedure TForm1.FormCreate(Sender: TObject);
var
size: longword;
begin
pdfo := GetResourceAsPointer('pdf', 'pdf', size);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
AcroPDF1.LoadFile(pdfo) ;
end;
ممنون میشم اگه کسی بلد هست من را نیز راهنمایی کنه.
راستی دوستان می دونم میشه فایل pdf رو جای ذخیره کرد و سپس استفاده کرد اما من نمی خوام این کار رو کنم و می خوام به صورت همین اشاره گر و بدون ذخیره سازی فایل pdf بر روی هارد این کار انجام بدم.
من یک فایل pdf را ریسورس کردم ، و می خوام اون فایل رو توسط کامپوننت acropdf نشان بدم.
برای نشان دادن pdf معمولی از کد
AcroPDF1.LoadFile('D:\delphi program\resorce\password1.pdf');
استفاده می کنم.
اما من چون فایل pdf مورد نظرم رو به صورت ریسورس کردم و به آن یک اشاره گر وصل کردم وقتی از نام اشاره گر استفاده می کنم ارور میده که باید از رشته استفاده کنید.
آیا راهی برای حل این مشکل است؟
کد برنامه من به صورت زیر است.
var
Form1: TForm1;
pdfo: pointer;
implementation
function GetResourceAsPointer(ResName: pchar; ResType: pchar;
out Size: longword): pointer;
var
InfoBlock: HRSRC;
GlobalMemoryBlock: HGLOBAL;
begin
InfoBlock := FindResource(hInstance, resname, restype);
if InfoBlock = 0 then
raise Exception.Create(SysErrorMessage(GetLastError));
size := SizeofResource(hInstance, InfoBlock);
if size = 0 then
raise Exception.Create(SysErrorMessage(GetLastError));
GlobalMemoryBlock := LoadResource(hInstance, InfoBlock);
if GlobalMemoryBlock = 0 then
raise Exception.Create(SysErrorMessage(GetLastError));
Result := LockResource(GlobalMemoryBlock);
if Result = nil then
raise Exception.Create(SysErrorMessage(GetLastError));
end;
{$R *.dfm}
{$R file4.res}
procedure TForm1.FormCreate(Sender: TObject);
var
size: longword;
begin
pdfo := GetResourceAsPointer('pdf', 'pdf', size);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
AcroPDF1.LoadFile(pdfo) ;
end;
ممنون میشم اگه کسی بلد هست من را نیز راهنمایی کنه.
راستی دوستان می دونم میشه فایل pdf رو جای ذخیره کرد و سپس استفاده کرد اما من نمی خوام این کار رو کنم و می خوام به صورت همین اشاره گر و بدون ذخیره سازی فایل pdf بر روی هارد این کار انجام بدم.