Einzelnen Beitrag anzeigen

Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#1

DLL Problem bei IntToStr und Uppercase

  Alt 27. Jan 2009, 13:08
servus,

habe mir eine kleine Testanwendung mit TJvInterpreterProgram gebaut.
Möchte die Procedure gerne in einer DLL auslagern, so kann ich mein Script immer wieder updaten ohne das die Anwendung neu kompiliert werden muss. Allerdings kommt bei uppercase ein Fehler

Delphi-Quellcode:
Type
  TScriptData = procedure(st : TScriptThread; Identifier: string; var Value: Variant; Args: TJvInterpreterArgs; var Done: Boolean); stdcall;// external 'Script.dll';

//...

procedure TScriptThread.Interpreter_GetValue(Sender: TObject;
  Identifier: string; var Value: Variant; Args: TJvInterpreterArgs;
  var Done: Boolean);
var
  Dll : THandle;
  DllPath : String;
  DLLScriptData : TScriptData;
begin
  DllPath := ExtractFilePath(ParamStr(0)) + 'script.dll';
  DLL := LoadLibrary(PChar(DllPath));

  try
    DLLScriptData := GetProcAddress(DLL, 'ScriptData');
    if Assigned(DLLScriptData) then
      DLLScriptData(self, Identifier, Value, Args, Done);
  except
    fErrorStr := 'Fehler beim Befehl <'+sIdentifier+'>';
    if Assigned(fonError) then
      fonError(fErrorStr, self);
  end;
  FreeLibrary(DLL);
end; //<- wenn uppercase in Identifier steht kommt hier der fehler
Meine DLL
Delphi-Quellcode:
library Script;

uses
  SysUtils,
  Classes, JvInterpreter, Tools_Scripte;

Procedure ScriptData(st : TScriptThread; Identifier: string; var Value: Variant; Args: TJvInterpreterArgs; var Done: Boolean); stdcall;
begin
  ///...

  Identifier := lowercase(Identifier);
  lCommands.Text := lowercase(lCommands.Text);
  done := not( lCommands.IndexOf(Identifier) = -1);

  if Identifier = 'uppercasethen Value := Uppercase(Args.Values[0]);

  //Konsole
  if Identifier = 'konsolethen st.OutKonsoleP(Args.Values[0]);
end;

exports
  ScriptData;

begin
end.
Der Befehl Konsole funktioniert. Nur bei uppercase kommt eine Fehlermeldung.
Kann mir da einer weiterhelfen? Habe bestimmt irgend wo einen Fehler gemacht.

mfg
  Mit Zitat antworten Zitat