![]() |
Textdatei in Ressource und in StringList laden
Hallo,
ich würde meine Sprachdateien (Textdateien) gerne direkt in das Programm einbinden. Ich habe die Dateien bereits als RCDATA eingebunden, finde aber irgendwie keine Möglichkeit die Daten in eine StringList zu laden. Leider hat die StringList ja keine .LoadFromRessource Funktion... Wisst ihr, wie das geht? Würdet mir echt helfen.. Danke :) |
AW: Textdatei in Ressource und in StringList laden
Zitat:
Ich lade wie folgt eine Sprachdatei in den Localizer von DevExpress:
Delphi-Quellcode:
Ich hoffe, das Beispiel hilft dir weiter
procedure DXLocalize;
Var AStream: TResourceStream; AHandle: THandle; ADllFileName: string; ALocaleId: Integer; begin ADllFileName := ExtractFilePath(Application.ExeName) + dxLangDLL; ALocaleId := AppConfig.ReadInteger('System', 'LocaleId', 1031); Assert(FileExists(ADllFileName)); if not FileExists(ADllFileName) then Exit; AHandle := LoadLibraryEx(PChar(ADllFileName), 0, LOAD_LIBRARY_AS_DATAFILE); if AHandle > HINSTANCE_ERROR then begin try AStream := TResourceStream.Create(AHandle, 'CXLOCALIZER', RT_RCDATA); try if AStream.Size > 0 then begin AStream.Position := 0; Localizer.LoadFromStream(AStream); Localizer.Locale := ALocaleId; Localizer.Active := True; end; finally AStream.Free; end; finally FreeLibrary(AHandle); end; end else raise Exception.Create('Fehler beim Laden ' + ADllFileName); end; Frank |
AW: Textdatei in Ressource und in StringList laden
ungetestet auf die Schnelle
Delphi-Quellcode:
procedure CreateStringListFromResource(const ResourceName: String; const SL: TStringList);
var s: string; begin with TResourceStream.Create(HInstance, ResourceName, RT_RCDATA) do begin setlength(s, Size div 2); // Widestring braucht 2 bytes pro Zeichen Read(s[1], Size); free; end; SL.text := s; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz