![]() |
Re: Flexibles Pluginsystem
@DGL-luke: Ich wollt des gerade in mein TestPlugin einfügen doch leider kann ich die Funktion AnsiIndexStrings nicht finden. Naja daraus schliesse ich des du sie selber geschrieben hast. Ich bin nur etwas ratlos wie ich die Funktion am besten schreibe vorallem wegen dem zweiten Parameter :wall:
//edit: Habs geschafft:
Delphi-Quellcode:
Kann man des noch irgendwie optimieren?
function AnsiIndexStrings(Befehl : String; StringArray : array of String) : integer;
begin for result := 0 to Length(StringArray) - 1 do begin if Befehl = StringArray[result] then exit; end; Result := -1; end; procedure PluginMain(Befehl : PChar; Parameter : Pointer); stdcall; begin case AnsiIndexStrings(Befehl,['PluginInit', 'PluginStart', 'PluginStop', 'PluginFree']) of 0://PluginInit begin PluginSend := TPluginRecord_PluginInit(Parameter^).PluginSend; end; 1://PluginStart begin end; 2://PluginStop begin end; 3://PluginFree begin end; end; end; |
Re: Flexibles Pluginsystem
Zitat:
![]() Des Weiteren befindet sich in der Unit "StrUtils" eine Funktion die genau das Gleiche tut:
Delphi-Quellcode:
so far
function AnsiIndexStr(const AText: string; var AValues: array of string): Integer;
GimbaR |
Re: Flexibles Pluginsystem
Ich bitte dich... ich würde hier doch nie meine eigenen FUnktionen kommentarlos hinklatschen^^
heisst halt nur n bischen anders: ![]() @GimbaR: jaa.... |
Re: Flexibles Pluginsystem
hehe jetzt hab ich es schon selber geschafft :mrgreen:
troztdem danke Aber noch eine wichtige Frage kann man des noch optimieren ... vllt. mit ein bissi asm? (ich kann leider kein inline asm) @DGL-luke: ja ich habs sie nur nicht gefunden (nicht mal mit Unit suchen) |
Re: Flexibles Pluginsystem
Hi,
alternativ könnte man auch statt eines Strings einen Integer übergebenm, und dort mit Konstanten oder Enumerationen für Befehle arbeiten. Das hätte folgende Vorteile: 1) Schnellere Überprüfung auf Gleichheit! 2) Keine Fehler durch Rechtschreibfehler oder der gleichen. und wenn man neue Konstante immer nur Hinten anfügt hat man auch die Abwertskompatibilität berücksichtigt! Greetz Boombuler PS: War nur so ne Idee :freak: |
Re: Flexibles Pluginsystem
man könnte einen Pointer auf einen Record übergeben. Anonsten nur mit Integer als Enumeration zu arbeiten ist halt blöd, weil damit das übergeben von Parametern (fast) unmöglich ist.
Gruß alias5000 |
Re: Flexibles Pluginsystem
Zitat:
ja es würde ein bisschen die Gischwindigkeit steigern aber naja man könnte sich immer noch mit der Nummer vertippen ABER des mit String Kommands zu machen hat menschliche vorteile ... "Was war Befehl 34345 noch mal *kratz*". aber wenn da steht "ProgrammStart" dann weiss man sofort bescheid :zwinker: es steht natürlich jedem frei integer zu verwenden. aber ich bleibe bei Strings :zwinker: |
Re: Flexibles Pluginsystem
Hallo,
Zitat:
Gruß xaromz |
Re: Flexibles Pluginsystem
man könnte sogar das windows messaging missbrauchen und sich per
![]() aber konstante sollten hier reichen,. |
Re: Flexibles Pluginsystem
ok stimmt :thumb:
Am besten in der Gemeinsamen Unit (also die die man veröffentlichen sollte) einfach alle Konstanten definieren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:26 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