AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Laden aus dll dauer ein bischen zu lange

Ein Thema von HomerGER · begonnen am 6. Jan 2004 · letzter Beitrag vom 19. Jan 2004
Antwort Antwort
Benutzerbild von HomerGER
HomerGER

Registriert seit: 9. Jun 2003
390 Beiträge
 
Delphi 7 Professional
 
#1

Laden aus dll dauer ein bischen zu lange

  Alt 6. Jan 2004, 02:56
Hallo ihr

ich lade aus einer dll ein rtf und suche dort nach einen anfang und ein ende dazwischen ist mein text
nur dauert das sehr lange und hat so ein blöden nebenefekt
der text wird nicht ganz gelöscht und wird nur überschrieben - sehr merkwürdig
Delphi-Quellcode:
//******************************************************************************
//Global
//Status Button Beschreibung aus Sprach_Shell.dll
Procedure XP_Tweak_Status_Button_Beschreibung_Lesen_GU(menu_i : Integer);
var
lib_h : THandle;
res_s : TResourceStream;
button_beschreibung1_sl : TStringList;
i : Integer;
menu_index_plus_s : String;
menu_index_minus_s : String;
begin_i : Integer;
end_i : Integer;
buffer_ms : TMemoryStream;
begin
    lib_h := LoadLibrary(PChar(g_sprachen_path_s + g_programm_sprache_s + '_Shell.dll'));

    button_beschreibung1_sl := TStringList.Create;
    button_beschreibung1_sl.Clear;
    buffer_ms := TMemoryStream.Create;
    buffer_ms.Clear;

    res_s := NIL;

    //Element aus Shell laden
    if (lib_h <> 0) then
    begin
        try
            res_s := TResourceStream.Create(lib_h, 'XP_Tweak_Button_Beschreibung', RT_RCDATA);

            button_beschreibung1_sl.Clear;
            button_beschreibung1_sl.LoadFromStream(res_s);

            //Aus StringList in XP_Tweak_Menu_Beschreibung_RichEdit kopieren
            Haupt_Form.XP_Tweak_Button_Beschreibung_RichEdit.Clear;
            Haupt_Form.Temp_RichEdit.Clear;
            Haupt_Form.Temp_RichEdit.Text := button_beschreibung1_sl.Text;

            //Beschreibung filtern
            menu_index_plus_s := '[+' + IntToStr(menu_i) + ']';
            menu_index_minus_s := '[-' + IntToStr(menu_i) + ']';

            begin_i := Haupt_Form.Temp_RichEdit.Lines.IndexOf(menu_index_plus_s) + 2;

            for i := 0 to begin_i do
            begin
                Haupt_Form.Temp_RichEdit.Lines.Delete(0);
            end;

            end_i := Haupt_Form.Temp_RichEdit.Lines.IndexOf(menu_index_minus_s);

            for i := end_i to Haupt_Form.Temp_RichEdit.Lines.Count -1 do
            begin
                Haupt_Form.Temp_RichEdit.Lines.Delete(end_i);
            end;

            Haupt_Form.Temp_RichEdit.Lines.SaveToStream(buffer_ms);
            buffer_ms.Position := 0;
            Haupt_Form.XP_Tweak_Button_Beschreibung_RichEdit.Lines.LoadFromStream(buffer_ms);

        finally
            res_s.Free;
            button_beschreibung1_sl.Free;
            buffer_ms.Free;
        end;
    end;
    FreeLibrary(lib_h);
end;
erklärung

ich lade mein rtf
in ein temprichedit das unsichbar ist
lösche alles was ich nicht brauche (alles vor [+x] und alles nach [-x]
dann in ein stream und dann ins richedit

geht alles nur sehr langsam 1-2sek
geht das schnell ?

[edit=Luckie]Code-Tags durch Delphi-Tags ersetzt. Mfg, Luckie[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von HomerGER
HomerGER

Registriert seit: 9. Jun 2003
390 Beiträge
 
Delphi 7 Professional
 
#2

Re: Laden aus dll dauer ein bischen zu lange

  Alt 15. Jan 2004, 11:46
hier mein versuch es zu beschleunigen

leider nicht sehr erfolgreich

Delphi-Quellcode:
//******************************************************************************
//Global
//Button Beschreibung aus Sprach_Shell.dll für Suchfunction
Function XP_Tweak_Button_Beschreibung_Lesen_GU(button_i : Integer; offset_oben_i, offset_unten_i : Integer) : String;
var
lib_h : THandle;
res_s : TResourceStream;
button_beschreibung1_sl : TStringList;
i : Integer;
start_i : Integer;
ende_i : Integer;
begin_plus_s : String;
end_minus_s : String;
begin_i : Integer;
end_i : Integer;
begin
    lib_h := LoadLibrary(PChar(g_sprachen_path_s + g_programm_sprache_s + '_Shell.dll'));

    button_beschreibung1_sl := TStringList.Create;
    button_beschreibung1_sl.Clear;
    Haupt_Form.Temp_RichEdit.Clear;
    res_s := NIL;
    Result := '';
    begin_i := -1;
    end_i := -1;

    //Element aus Shell laden
    if (lib_h <> 0) then
    begin
        try
            res_s := TResourceStream.Create(lib_h, 'XP_Tweak_Button_Beschreibung', RT_RCDATA);
            Haupt_Form.Temp_RichEdit.Lines.LoadFromStream(res_s);
            Haupt_Form.Temp_RichEdit.PlainText := False;

            //Begin und End Strings bilden
            begin_plus_s := '[+' + IntToStr(button_i) + ']';
            end_minus_s := '[-' + IntToStr(button_i) + ']';

            start_i := 0;
            ende_i := 0;
            if (button_i <> 1) then
            begin
                start_i := start_i + (button_i * 10);
                ende_i := start_i + (button_i * 10) + 25; //ergib sich aus der min. zeilen
            end
            else
            begin
                start_i := 0;
                ende_i := 25;
            end;

            if (ende_i > Haupt_Form.Temp_RichEdit.Lines.Count) then
            begin
                ende_i := Haupt_Form.Temp_RichEdit.Lines.Count -1;
            end;

            for i := start_i to ende_i do
            begin
                if (begin_plus_s = Haupt_Form.Temp_RichEdit.Lines.Strings[i]) then
                begin
                    begin_i := i;
                end;
                if (end_minus_s = Haupt_Form.Temp_RichEdit.Lines.Strings[i]) then
                begin
                    end_i := i;
                    Break;
                end;
            end;

            //Wenn nicht gefunden Temp_RichEdit löschen
            if ((begin_i = -1) OR (end_i = -1)) then
            begin
               button_beschreibung1_sl.Clear;
            end
            else
            begin
                //ShowMessage(inttostr(begin_i) + ' - ' + inttostr(end_i));
                for i := begin_i + offset_oben_i to end_i - offset_unten_i do
                begin
                    button_beschreibung1_sl.Append(Haupt_Form.Temp_RichEdit.Lines.Strings[i]);
                end;
            end;

            //Ergebnis übergeben
            Result := button_beschreibung1_sl.Text;
            //ShowMessage(Result);
            
        finally
            res_s.Free;
            button_beschreibung1_sl.Free;
        end;
    end;
    FreeLibrary(lib_h);
end;
  Mit Zitat antworten Zitat
Benutzerbild von HomerGER
HomerGER

Registriert seit: 9. Jun 2003
390 Beiträge
 
Delphi 7 Professional
 
#3

Re: Laden aus dll dauer ein bischen zu lange

  Alt 17. Jan 2004, 00:03
es ist ein rtf file
das file benutze ich um beschreibungen auszugeben

für die funktionen brauch ich zwar keine formatierung aber ich was soll ich machen?
die funktion soll eigentlich nur den text zwischen den [+x][-x] ausgeben
und in einer anderen funktion werden wörter gesuch - für eine suchfunktion also
  Mit Zitat antworten Zitat
Benutzerbild von CenBells
CenBells

Registriert seit: 30. Mär 2003
Ort: Kiel urspr. Lübeck
176 Beiträge
 
Delphi 7 Professional
 
#4

Re: Laden aus dll dauer ein bischen zu lange

  Alt 19. Jan 2004, 00:34
hallo,

für die suche im richedit solltest du die funktionen findtext oder so ähnlich verwenden. Das sucht dann den richtigen text und überließt die formatierungen.

Musst mal in der OH schauen.

Gruß
Ken
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 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