![]() |
Laden aus dll dauer ein bischen zu lange
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:
erklärung
//******************************************************************************
//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; 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] |
Re: Laden aus dll dauer ein bischen zu lange
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; |
Re: Laden aus dll dauer ein bischen zu lange
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 |
Re: Laden aus dll dauer ein bischen zu lange
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:19 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-2025 by Thomas Breitkreuz