W Delphi możesz zadeklarować łańcuchy, które mają być przechowywane w tabeli String w sekcji zasobów modułu.Jak uzyskać identyfikator zasobu tabeli łańcuchów dla łańcucha zasobów Delphi?
resourcestring
rsExample = 'Example';
Podczas kompilacji Delphi przydzieli dla niego identyfikator i zapisze go w tabeli ciągów.
Czy istnieje sposób na odzyskanie identyfikatora łańcucha, który jest zadeklarowany jako łańcuch zasobów?
Powodem jest to, że używam pakietu, który działa tak jak gnugettext. Niektóre funkcje w System.pas (jak LoadResString) są zawieszone, więc kiedy używam łańcucha zasobów w wyrażeniu, zostanie on zastąpiony innym ciągiem (tłumaczenie). Oczywiście jest to bardzo przydatne, ale czasami potrzebuję oryginalnego (nieprzetłumaczonego) tekstu łańcucha zasobów.
Kiedy mogę odzyskać identyfikator zasobu łańcucha, mogę wywołać funkcję LoadString API, aby uzyskać oryginalny tekst zamiast przetłumaczonego tekstu.
Ach dziękuję! Nie wiedziałem, że resourcestring był właściwie wskaźnikiem do rekordu TResStringRec. Nigdzie nie mogłem tego znaleźć w dokumentacji. Oczywiście, to może być moja wina, ale czy sądzisz, że jest to gdzieś udokumentowane? –
Dokumentacja ['TResStringRec'] (http://docwiki.embarcadero.com/Libraries/XE4/en/System.TResStringRec) mówi:" ... TResStringRec reprezentuje zasób łańcuchowy. TResStringRec to struktura zawierająca moduł i identyfikator zasobu ciągów. ' – RRUZ
Nie widzę łącza do ciągów zadeklarowanych jako' resourcestring' w dokumentacji [TResStringRec] (http://docwiki.embarcadero.com/Libraries/XE4/en/System.TResStringRec). Mówi on, że zmienne typu TResStringRec są używane przez procedury systemowe do lokalizowania i ładowania zasobów ciągów w czasie wykonywania. Może w tym zdaniu mówi się o łańcuchach zasobów, ale nie było to dla mnie jasne. W każdym razie wysłałeś mnie we właściwym kierunku! –