AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Objekte aus eingebundener DLL erzeugen

Ein Thema von JanWe · begonnen am 18. Mai 2015 · letzter Beitrag vom 18. Mai 2015
Antwort Antwort
Benutzerbild von JanWe
JanWe

Registriert seit: 23. Mär 2015
Ort: NRW
78 Beiträge
 
Delphi 7 Personal
 
#1

Objekte aus eingebundener DLL erzeugen

  Alt 18. Mai 2015, 19:26
Delphi-Version: XE
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.
Angehängte Dateien
Dateityp: zip DLL_Projekt.zip (169,3 KB, 1x aufgerufen)
Jan

Geändert von JanWe (18. Mai 2015 um 19:30 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#2

AW: Objekte aus eingebundener DLL erzeugen

  Alt 18. Mai 2015, 19:32
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. (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

* 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)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (18. Mai 2015 um 19:40 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von JanWe
JanWe

Registriert seit: 23. Mär 2015
Ort: NRW
78 Beiträge
 
Delphi 7 Personal
 
#3

AW: Objekte aus eingebundener DLL erzeugen

  Alt 18. Mai 2015, 21:53
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 )

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!
Jan
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:30 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