Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Datei in StringList aus dll laden (https://www.delphipraxis.net/11001-datei-stringlist-aus-dll-laden.html)

HomerGER 29. Okt 2003 12:50


Datei in StringList aus dll laden
 
hi all

Ich hab eine Dll in der Files sind

so etwa
meldung RCDATA F:\Texte\meldungen.txt

kann mir jemand sagen wie ich sie jetzt in ne stringliste bekommen um sie auszuwerten ?

sakura 29. Okt 2003 13:08

Re: Datei in StringList aus dll laden
 
Die Funktion GetStringFromResource aus folgendem Beitrag sollte Dir helfen. Anstatt HInstance musst Du allerdigns das Handle der DLL übergeben.

http://www.delphipraxis.net/internal_redirect.php?t=326

...:cat:...

HomerGER 29. Okt 2003 13:32

Re: Datei in StringList aus dll laden
 
Hi
leider meldet er mir immer das er meine dll nicht findet

Code:
Procedure Meldung_Lesen_GU();
var
lib_h : TStream;
meldungen_sl : TStringList;
begin
    lib_h := TResourceStream.Create(HInstance, 'Texte.dll', RT_RCDATA);
    meldungen_sl := TStringList.Create;
    meldungen_sl.Clear;

    try
        meldungen_sl.LoadFromStream(lib_h);
        ShowMessage(meldungen_sl.Strings[1]);
    finally
    meldungen_sl.Free;
    end;
end;

sakura 29. Okt 2003 13:41

Re: Datei in StringList aus dll laden
 
Hi!

Code:
TResourceStream.Create([color=#ff003f]HInstance[/color], [color=#2400ff]'Texte.dll'[/color], RT_RCDATA);
HInstance (ROT) muss mit dem Handle der Library ersetzt werden. Dieses kannst Du mit LoadLibrary() ermitteln.

Der Blaue Teil nimmt den Namen der Ressource, z.B. 'meldung'.

...:cat:...

HomerGER 29. Okt 2003 13:49

Re: Datei in StringList aus dll laden
 
Sorry der cod da oben blödsinn

ich hab den jetzt so geändert

Code:
//******************************************************************************
//Global
//Aus Text.dll Meldungen
Procedure Meldung_Lesen_GU();
var
lib_h : THandle;
res_s : TResourceStream;
meldungen_sl : TStringList;
begin
    lib_h := LoadLibrary('Texte.dll');

    res_s := TResourceStream.Create(lib_h, 'deu_meldung', RT_RCDATA);

    meldungen_sl := TStringList.Create;
    meldungen_sl.Clear;
    if (lib_h <> 0) then
    begin
        try
            meldungen_sl.LoadFromStream(res_s);
            ShowMessage(meldungen_sl.Strings[1]);
        finally
        meldungen_sl.Free;
        end;
        FreeLibrary(lib_h);
    end;
end;
geht auch
ist aber die systax richtig

und was mach ich wenn er die dll nich findet?


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:46 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