Zasoby w DLL - problemy

Odpowiedz Nowy wątek
2006-06-29 08:58
0

Witam, chciałem dołączyć plik z zasobami do DLL;ki i pozniej w programi korzystać z tych zasobów, niestety nie obyło się bez problemów. Czytałem artykuły na stronie, ale nadal nie chce sięm kompilowć mój program, który ma postać taką

unit frmMain;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm1 = class(TForm)
    lbl1: TLabel;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
  var
    DLL:THandle;
    Buff:array[1..255] of PAnsiChar;
  begin
    DLL := LoadLibrary('ZasobyDLL.dll');
    LoadString(DLL, 101, Buff, SizeOf(Buff));
    lbl1.Caption := Buff;
    FreeLibrary(DLL);
  end;

end.

DLL-ka wygląda tak
```delphi
library ZasobyDLL;

{$R 'Tekst.res' 'Tekst.rc'}

uses
  SysUtils,
  Classes;

begin
end.

No i pliczek z zasobami

STRINGTABLE
BEGIN
    101, "Marek"
    102, "Łotocki"
END

Otrzymuje komunikat:

Incompatible types: Array and PAnsiChar
Incompatible types: String and Array

Dodam jeszcze że parcuje na Delphi 2005 Personal

Pozostało 580 znaków

2006-06-29 09:12
Paweł S.
0

Zamień

Buff:array[1..255] of PAnsiChar;

na

Buff:PChar;

I powinno działać ;-P

Pozostało 580 znaków

2006-06-29 09:30
0
var
  Buff: array[0..255] of Char;

Reszta powinna działać ;)


Mam nadzieję, że pomogłem :)

Łukasz Brodny

Pozostało 580 znaków

2006-06-29 09:42
0

Dzięki, ale głupota, z przyzwyczajenia dałem tablice od 1 zamiast od 0, teraz już śmiga jak trzeba. DZIĘKI WIELKIE !!!

Pozostało 580 znaków

2006-06-29 09:58
0

Jeszcze może jedno pytanko dotyczące zasobów. Mianowicie źle mi wyświtla polskie znaki z napisów umieszczonych w zasobach.

Pozostało 580 znaków

2006-06-29 11:06
0

W aplikacji okienkowej powinno działać bez problemów (i mi - zgodnie z teorią - działa), a w konsolowej musisz użyć funkcji:

CharToOem(buff, buff);

<font color="red">Konto porzucone</span>

Dzięki wszystkim forumowiczom za lata wspólnych dyskusji; miłej zabawy w programowanie!
Sławomir 'Szczawik' Włodkowski

Pozostało 580 znaków

2006-06-30 14:22
0

Pytań ciąg dalszy. Jak w DLL-ce wyciągnąć dane z zasobów do niej dołączonych. Chciałem użyć LoadString ale nie wiem w jakim module on jest.

Pozostało 580 znaków

2006-06-30 15:54
0
pulkownik napisał(a)

Chciałem użyć LoadString ale nie wiem w jakim module on jest.
to wpisz w googlu albo F1 na niej naciśnij [glowa]


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2006-07-01 00:13
0

Jest taka przydatna zmienna, nazywa się HInstance...


Mam nadzieję, że pomogłem :)

Łukasz Brodny

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0