Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Objekte aus eingebundener DLL erzeugen (https://www.delphipraxis.net/185137-objekte-aus-eingebundener-dll-erzeugen.html)

JanWe 18. Mai 2015 18:26

Delphi-Version: XE

Objekte aus eingebundener DLL erzeugen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

entschuldigt, ich weiß auch nicht, wie ich das besser umschreiben soll.

Ich möchte mit meiner Delphi 5 Objekte wie PENs einbinden/verwenden, was aber wohl erst mit Delphi >=2006 funktioniert.
Das müßte ich dann wohl über eine DLL lösen, oder?
Also in einer DLL "nach außen" erzeugbare Objekte programmieren.

Jetzt hab ich bei uns an der Uni (da ist Delphi XE an den Terminals installiert) versucht, ein Projekt zu schreiben, das mir wenigstens schon mal auf der Form einen PEN erzeugen soll.
Doch schon da scheitert es.

Bei Graphics [bei den Variablen] wird anscheinend der 'Punkt' erwartet aber ';' gefunden.
direkt darunter: => MyPen = ungültige Compileranweisung
" " undeklarierter Bezeichner: PointF
" " undeklarierter Bezeichner: CreateGraphics
bei myPen: // FEHLER: Oprator oder Semikolon fehlt;; Record, object oder Klasse erforderlich

(hab mal die gemeldeten Fehler in die Kommentare geschrieben)
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var g  : Graphics; // . erwartet, aber ; gefunden.
myPen  : Pen; // MyPen = ungültige Compileranweisung
Punkte : array[0..2] of PointF; // " " undeklarierter Bezeichner: PointF
begin
  g := Self.CreateGraphics; // " " undeklarierter Bezeichner: CreateGraphics

mypen := Pen.create(color.red, 15); // FEHLER: Oprator oder Semikolon fehlt;; Record, object oder Klasse erforderlich

Punkte[0] := PointF.Create(100,50);
Punkte[1] := PointF.Create(300,150);
Punkte[2] := PointF.Create(100,250);

myPen.startCap := LineCap.Round;
myPen.endCap := LineCap.Round;

myPen.linejoin := Linejoin.Round;

g.Drawlines(mPen, punkte);
end;
Der Code stammt aus einem alten Scriptheft, das ich in den CIP-Räumen Bibliothek gefunden habe. (Delphi wird ja nicht mehr unterrichtet, sind ja alle auf JAVA aufgesprungen ...) Allerdings fehlt weitere Erklärung dazu. Anscheinend muß das mal so funktioniert haben.

mhh, was läuft denn da falsch?
und:
Ist das überhaupt der richtige Ansatz - per (dynamischer)DLL?
und das ist das nächste Problem: Wie bekomme ich das dann, wenn/falls es im Formular funktionieren sollte in DLL Code (delphiXE)?
... sodaß ich in meinem Delphi 5 Programm die eingebundene DLL verwenden kann und dann sogar die Pen-Objekte dort in meinem D5 Programm erzeugen, löschen und verändern kann?

Ganz herzlichen Dank schon mal.

Im Anhang mein Versuchsprojekt
im Unterordner DIE_DLL befindet sich der Code für die DLL, die später mal entstehen soll.

himitsu 18. Mai 2015 18:32

AW: Objekte aus eingebundener DLL erzeugen
 
Bei Fehlern fängt man immer oben an.
Der Rest sind Folgefehler, bzw. deren Fehlermeldungen sind eventuell von vorherigen Fehlern beeinflusst/verfälscht.

Pen und Graphics sind für Typen echt blöde Bezeichner (Typ-Namen), vorallem da oben , wie dir Code-Insight sagen sollte (Hint über "Graphics"), daß er dort die Unit graphics zuerst findet und der Compiler demnach auch einen Typ aus der Unit Graphics erwartet. (
Delphi-Quellcode:
Unit.Typ
)


Und vorallem, gibt es da überhaupt irgendwo Typen, die sich Graphics und Pen nennen?



Abgesehn davon stimmt hier überhaupt nichts und ich empfehle dir dringend ein Delphi-Tutoruial zur Delphi-Syntax und über zu DLLs durchzulesen :!:

*
Delphi-Quellcode:
Procedure MyPE(a, b);
Syntax ist falsch
* die Procedur wird in dieDLL.dpr auch garnicht exportiert
* und weder in DLL_Call_Projekt, noch in Unit1, erkenne ich einen Import.

Und dann noch: Klassen/Objektinstanzen darf man niemals zwischen DLL und EXE herumreichen. (nur Interfaces oder statische Typen, also Records)

JanWe 18. Mai 2015 20:53

AW: Objekte aus eingebundener DLL erzeugen
 
Delphi Tutorials ...
gibt es da gute? Hab auch mal hier gefragt:

http://www.delphipraxis.net/185141-d...ml#post1302027

mhh, ja, ich hab nachdem ich vergessen hatte, a und b in der Prozedur zu deklarieren sowieso erstmal versucht, das ganze besser erstmal in ner normalen FORM-Anwendung zu realisieren. Tja und auch das ging ja schief.

Klar, die Fehlermeldungen hab ich versucht chronologisch zu ermitteln. Dabei wurden mir Dank Deinem Tip mit dem Mauszeiger klar, daß es auch in Delphi NAMESPACEs gibt.

Mhh, ja, ob es in Graphics überhaupt PEN oder andere Typen gibt.
Bin noch nicht fündig geworden (und bei meinem derzeitigen Delphi-Kenntnisstand muß das GAR nichts heißen :P)

Hab den Code nur genauso in mein Projekt abgetippt.
Schien mir auch nachvollziehbar. Ok, daß die Delphi-Codeverfolständigung jede info unterließ hab ich zwar gesehen, aber aufgrund meiner noch mangelnden Kenntnis zurückgestellt.

mhh. Nunja, somit rückt das DLL Projekt schon mal in weitere Ferne. Gleichwertig ist nämlich, das wenigstens so scho mal zum Laufen zu bekommen.

Danke Dir aber schon mal!


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:47 Uhr.

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