Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi WinAPI-Wrapper für Delphi (https://www.delphipraxis.net/158290-winapi-wrapper-fuer-delphi.html)

lafl 11. Feb 2011 18:32

WinAPI-Wrapper für Delphi
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

Ich habe mir einen kleinen WinAPI-Wrapper mit Delphi gebaut und nun habe ich zwei Fragen. Wenn ich die Klasse CWindow mit Create aufrufe, kommt eine Runtime 216-Fehlermeldung. Wie kann man dieses Problem beheben?
Als Nächstes will ich versuchen, die WndProc-Funktion in Message-Mapping Funktionen - ähnlich der MFC -einzukapseln. Dafür habe ich bisher noch keinen richtigen Plan, jedoch habe ich es bereits ohne richtigem Erfolg versucht.

Die Dateien befinden sich im Anhang, wobei in "window.pas" die Klasse "CWindow" enthalten ist und im Projekt "test" befindet sich demnach ein kleiner Versuch.

Assarbad 11. Feb 2011 19:52

AW: WinAPI-Wrapper für Delphi
 
Zitat:

Zitat von lafl (Beitrag 1081120)
Ich habe mir einen kleinen WinAPI-Wrapper mit Delphi gebaut und nun habe ich zwei Fragen. Wenn ich die Klasse CWindow mit Create aufrufe, kommt eine Runtime 216-Fehlermeldung. Wie kann man dieses Problem beheben?

Umgang mit dem Debugger lernen, diesen anwerfen und das Problem eingrenzen. Ansonsten ist die Frage zu allgemein um hier spezifische Antworten zu geben.

Zitat:

Zitat von lafl (Beitrag 1081120)
Als Nächstes will ich versuchen, die WndProc-Funktion in Message-Mapping Funktionen - ähnlich der MFC -einzukapseln. Dafür habe ich bisher noch keinen richtigen Plan, jedoch habe ich es bereits ohne richtigem Erfolg versucht.

Vergiß es. Ernsthaft!
Haste dir die MFC-Quellen mal angeschaut? Die basieren nicht nur auf diversen Mechanismen die man nur mit C++-Templates hinbringt (und Delphi Generics können nicht alles nachbilden) sondern vor allem auf jeder Menge Makros. Delphi hat keinen Präprozessor (und alle Versuche sowas nachzubilden fand ich bisher eher lachhaft) - einen CPP könnte man natürlich direkt einspannen (bspw. MCPP).

sx2008 11. Feb 2011 21:42

AW: WinAPI-Wrapper für Delphi
 
Mir scheint, du möchtest sogenannte Hier im Forum suchenNon-VCL-Programme mit Delphi schreiben.
Also Programme, die ohne VCL auskommen, direkt auf der Windows-API aufsetzen und daher besonders kleine Exe-Dateien haben.

lafl 12. Feb 2011 11:02

AW: WinAPI-Wrapper für Delphi
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo nochmal,

Ich habe nochmal eine überarbeitete Version des Fensters in den Anhang gelgt, wobei der Fehler aufgrund des fehlendem Constructors kam. Zur Zeit habe ich nicht vor, die WndProc-Funktion als Message-Mapping auszugeben, aber ich möchte, dass die WndProc-Funktion in der Klasse CWindow enthalten ist und dass ich diese von dort aus auch aufrufen kann. Meine Frage ist daher, ob es möglich ist, die WndProc als static zu deklarieren. Ich habe zwar etwas von class gelesen, aber das läuft nicht so ganz. Eine Fehlermeldung kommt zwar nicht, aber das Fenster wird nicht angezeigt und das Programm bleibt stecken.

Kann mir diesbezüglich jemand helfen?


@sx2008: So ungefähr. Ich möchte aber ein Fenster in einer Klasse einkapseln lassen. Für C++ gibt es dafür mehrere Tutorials, die mir aber aufgrund der Unterschiede der beiden Sprachen wenig helfen.

Luckie 12. Feb 2011 11:25

AW: WinAPI-Wrapper für Delphi
 
Das wird das Problem sein: http://www.michael-puff.de/Programmi...ckMethod.shtml

Man beachte auch die Links am Ende des Artikels.

lafl 12. Feb 2011 11:29

AW: WinAPI-Wrapper für Delphi
 
Danke nochmal! Ich werde es heute Abend mal ausprobieren.

Reinhard Kern 12. Feb 2011 17:06

AW: WinAPI-Wrapper für Delphi
 
Hallo,

Delphi IST ein WinAPI-Wrapper. Entweder benutze ich Win32 direkt oder die entsprechenden Funktionen/Komponenten von Delphi, wozu noch ein API mit der gleichen Funktion?

MFC ist auch nur ein anderer WinAPI-Wrapper. Wenn du es schöner findest, benutze es halt.

Gruss Reinhard

Assarbad 12. Feb 2011 18:10

AW: WinAPI-Wrapper für Delphi
 
Zitat:

Zitat von Reinhard Kern (Beitrag 1081264)
Delphi IST ein WinAPI-Wrapper. Entweder benutze ich Win32 direkt oder die entsprechenden Funktionen/Komponenten von Delphi, wozu noch ein API mit der gleichen Funktion?

Teile der VCL sind Wrapper für diverse Win32-Funktionen. Aber daß ein einfaches Programm schonmal mindestens 300 KiB auf die Waage bringt war und ist immer wieder Ansporn andere Alternativen zu suchen oder zu kreieren.

Zitat:

Zitat von Reinhard Kern (Beitrag 1081264)
MFC ist auch nur ein anderer WinAPI-Wrapper. Wenn du es schöner findest, benutze es halt.

In Delphi? Das will ich sehen :lol:

Wenn er es ohnehin schlank will, müßte er schon auf ATL+WTL ausweichen. Denn auch MFC kommt schwergewichtig daher (ähnlich wie die VCL in diesem Sinn).

EWeiss 12. Feb 2011 18:15

AW: WinAPI-Wrapper für Delphi
 
Zitat:

Delphi IST ein WinAPI-Wrapper. Entweder benutze ich Win32 direkt oder die entsprechenden Funktionen/Komponenten von Delphi, wozu noch ein API mit der gleichen Funktion?
Korrekt ;)
Sinn macht das nur in Sprachen wie VB
Da hier noch alle API's von Hand eingefügt werden müssen.

gruss

himitsu 12. Feb 2011 18:18

AW: WinAPI-Wrapper für Delphi
 
Beim .net merkt das nur keiner, weil viele das ganze .Net-Framework vergessen, welches im Hintergrund nötig ist.

PS: Man könnte es ja mal mit Runtime-Libraries versuchen ... da ist die EXE auch recht klein. :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:31 Uhr.
Seite 1 von 2  1 2      

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