AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Dyn. Record & Array, PChar treffen auf DLL's
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Desmulator · begonnen am 18. Jul 2008 · letzter Beitrag vom 19. Jul 2008
 
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, 15: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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:44 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