Einzelnen Beitrag anzeigen

jam176

Registriert seit: 21. Jul 2003
9 Beiträge
 
#1

fremde Dll verwenden

  Alt 25. Jul 2003, 14:55
Völlige Verzweiflung hat mich letztlich dazu getrieben hier ein frage zu posten. Also flehe ich mal dezent um Hilfe!

Ich verwende eine DLL deren C source ich erhlaten habe. da gibt es eine ganz simple Prozedur drinnen, die ich in meinem Delphi Programm nützen möchte:

Code:
{
 Const OK          = 0
 Const MEM_ERROR   = &H1
 Const DLL_NOTINIT = &H2
   .
   .
   .
}
Code:
VOID EXPENTRY netErrorStr (USHORT errCode, USHORT maxLen, PVALUE errStr)
{
  switch (errCode)
  {
    case OK        :
          strncpy(errStr, "O.K."                                 , maxLen);
          errStr[maxLen] = '\0';
          break;

    case DLL_NOTINIT:
          strncpy(errStr, "DLL noch nicht initialisiert"         , maxLen);
          errStr[maxLen] = '\0';
          break;

    case MEM_ERROR :
          strncpy(errStr, "Speicherfehler"                       , maxLen);
          errStr[maxLen] = '\0';
          break;

    case ADR_ALRUSED:
          strncpy(errStr, "Adresse bereits verwendet worden"     , maxLen);
          errStr[maxLen] = '\0';
          break;

 
    default         :
          strncpy(errStr, "Unbekannter Fehler"                   , maxLen);
          errStr[maxLen] = '\0';
  }
}
Ich hab also in Delphi7 diese Prozedur wie folgt dekalriert:

Zitat:
procedure netErrorStr(errNo, MaxLen: smallint; var ErrorText: PChar); pascal; external 'waagen.dll';
und dann so verwendet:

Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  pValue: PChar;
  sValue: String;
begin
  netErrorStr(0,80,pValue);
  sValue:= strpas(PChar(pValue);
  showmessage(sValue);
end;
Da sollte doch dann sowas wie "O.K." im meiner Messagebox angezeigt werden. Aber ach: ich bin schlicht und ergreifend z'deppat!

Gibt es wo einen Barmherzigen der mir sagt wie meine netErrorStr wirklich deklariert werden muss um den ErrorString zurückzubekommen?

danke schon mal
rieder/IT
  Mit Zitat antworten Zitat