Einzelnen Beitrag anzeigen

Benutzerbild von Desmulator
Desmulator

Registriert seit: 3. Mai 2007
Ort: Bonn
169 Beiträge
 
#1

Dyn. Record & Array, PChar treffen auf DLL's

  Alt 18. Jul 2008, 16:15
Hoi,
nun, wie die Überschrift schon sagt, habe ich ein paar Fragen zu besonderen Datentypen in Verbindung mit DLLs.

Als erstes kommt der in Delphi bekannte VariantRecord, der sein Inhalt ändern kann, je nach dem Wert eines bestimmten Eintrags.
Die ganze Angelegnheit sieht so aus:
Delphi-Quellcode:
  TKeyWord = record
    Name : PChar;
    CaseIntensiv : Boolean;
  end;

  TCharRange = record
    Range : array of Char;
    CaseIntensiv : Boolean;
  end;

  TParentheses = record
    StartTag : PChar;
    EndTag : PChar;
    CaseIntensiv : Boolean;
  end;
  
  TToken = record
    ID : Cardinal;
    Prioiorty : Cardinal;
    TokenType : TTokenType;
    case TokenType : TTokenType of //hier ist der VariantTeil
      ttKeyWord : ( Data : TKeyWord ); //Jenachdem wie TokenTyp steht
      ttCharRange : ( Data : TCharRange ); //Wird der entsprechende Record
      ttParentheses : ( Data : TParentheses ); //hinzu gefügt
  end;
Frage, ist sowas alls DLL Export/Import möglich, oder bestehen da schwierigkeiten in anderen Programmiersprachen?
Wenn ja, was gibt es für alternative Möglichkeiten.

Jetzt komm ich zu der Dynamischen Array. Gibt es eine Möglichkeit diese innerhalb der DLL zu speichern, da ihre Elementanzahl, wie gesagt dynamisch ist.

Delphi-Quellcode:
  TCharRange = record
    Range : array of Char; //Hier können beliebig viele Chars enthalten sein.
    CaseIntensiv : Boolean;
  end;
Das Problem ist, wenn eine Programmfunktion, die diese Array übergabe, termieniert wird, wird auch das array aus dem speicher entfernt, daher suche ich nach einer Möglichkeit dieses Array in einen anderen Speicherbereich zu verschieben.

Das gleiche Problem besteht auch bei PChar/PAnsiChar , wenn hier die Funktion terminiert wird, wird auch deren speicherplatz gelöscht, daher auch die daten sind verloren und mein gespeicherter Pointer zeigt auf nichts.

Mfg
Desmu
Lars
There are 10 kinds of people in the world:
those who get binary, and those who don’t.
  Mit Zitat antworten Zitat