Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Flexibles Pluginsystem: Diskussion (https://www.delphipraxis.net/74448-flexibles-pluginsystem-diskussion.html)

gsh 20. Jul 2006 17:24

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:
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;
Kann man des noch irgendwie optimieren?

GimbaR 20. Jul 2006 17:49

Re: Flexibles Pluginsystem
 
Zitat:

Zitat von gsh
@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:

Ein Besipiel dafür findet sich in der CodeLib: *Klick*

Des Weiteren befindet sich in der Unit "StrUtils" eine Funktion die genau das Gleiche tut:
Delphi-Quellcode:
function AnsiIndexStr(const AText: string; var AValues: array of string): Integer;
so far

GimbaR

DGL-luke 20. Jul 2006 17:51

Re: Flexibles Pluginsystem
 
Ich bitte dich... ich würde hier doch nie meine eigenen FUnktionen kommentarlos hinklatschen^^

heisst halt nur n bischen anders: Delphi-Referenz durchsuchenAnsiIndexStr

@GimbaR: jaa....

gsh 20. Jul 2006 17:54

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)

Boombuler 21. Jul 2006 07:06

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:

alias5000 21. Jul 2006 12:56

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

gsh 21. Jul 2006 20:14

Re: Flexibles Pluginsystem
 
Zitat:

Zitat von Boombuler
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:

ja man könnte natürlich auch einen Integer übergeben.
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:

xaromz 21. Jul 2006 20:21

Re: Flexibles Pluginsystem
 
Hallo,
Zitat:

Zitat von gsh
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:

Wer sich schon 'mal Windows-Botschaften angesehen hat, der weiß, dass man für sowas Konstanten (mit aussagekräftigen Namen) definiert.

Gruß
xaromz

DGL-luke 21. Jul 2006 20:32

Re: Flexibles Pluginsystem
 
man könnte sogar das windows messaging missbrauchen und sich per Delphi-Referenz durchsuchenregisterwindowsmessage einen Integer zu einem string holen... (oder das ganze nachbilden).

aber konstante sollten hier reichen,.

gsh 21. Jul 2006 21:56

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 08:06 Uhr.
Seite 2 von 4     12 34      

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