Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Textdatei in Ressource und in StringList laden (https://www.delphipraxis.net/186150-textdatei-ressource-und-stringlist-laden.html)

Cubysoft 7. Aug 2015 17:11

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 :)

dataspider 7. Aug 2015 19:22

AW: Textdatei in Ressource und in StringList laden
 
Zitat:

Zitat von Cubysoft (Beitrag 1311464)
Hallo,

Leider hat die StringList ja keine .LoadFromRessource Funktion...
Wisst ihr, wie das geht? Würdet mir echt helfen..

Danke :)

...aber LoadFromStream

Ich lade wie folgt eine Sprachdatei in den Localizer von DevExpress:

Delphi-Quellcode:
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;
Ich hoffe, das Beispiel hilft dir weiter

Frank

idefix2 7. Aug 2015 19:28

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 21:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz