Nie widzi zasobu, który jest

0

Cześć. Mam dodany do zasobu jakiś długi tekst.
Pod nazwą SKRYPT.

Teraz próbuję go wydobyć:
rs:=TResourceStream.Create(hInstance, 'SKRYPT', 'RT_RCDATA');

Dostaję błąd: "Resource SKRYPT not found".

Zasób tworzę tak:

skrypt RCDATA "plik.sql"

Dodaję do maina dyrektywę: {$R skrypt.res}

Resource Hacker pokazuje, że ten skrypt jest, ale środowisko go nie widzi. Czemu?

0

Może zamiast tego RCDATA dawaj po prostu DATA.
Ja w ten sposób nauczyłem się kilka dni temu importować ikony:)

0
rafal__ napisał(a)

Może zamiast tego RCDATA dawaj po prostu DATA.
Ja w ten sposób nauczyłem się kilka dni temu importować ikony:)

Dobra, poszło, ale jest kolejny problem:

buff: array[0..MAX_PATH] of char;
query: string;

begin
  //tworzę TResourceStream
  rs.Read(buff, sizeof(buff));
  for i:=0 to sizeof(buff) -1 do query:=query+buff[i];
end;

MAX_PATH ma 260. Size tego wszystkiego ma ponad 20 tysięcy. Mogę to jakoś zrobić inaczej niż w pętli odczytywać fragmentami?

0

Zamiast pętli zrób przypisanie:

query:=buff;

Jeszcze lepszym rozwiązaniem byłoby wczytanie rs.Read od razu do stringa, ale ten musiałby mieć stały rozmiar, a stałe stringi mogą mieć do 255 (czyli mniej niż MAX_PATH) znaków. Wniosek: tak się nie da. Zastanów się, czy query w postaci string jest Ci w ogóle potrzebne; może możesz do funkcji podać adres buff i będzie OK..

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