![]() |
Re: Delphi objektfähig machen
Zitat:
|
Re: Delphi objektfähig machen
Zitat:
Insbesondere für die erstgenannte Liste an allerlei Hardwarezugriff gibt es fest definierte Standards, die sich jeder durchlesen kann. Und die Interna des Mainboards interessieren mich auch nicht, die implementieren ein Interface und das spreche ich an, mehr will ich gar nicht wissen. Genauso wenig interessiert mich, wie der Prozessor nun 1+1 rechnet, mir reicht, daß er es rechnet. Und insbesondere bezüglich der Programmiersprachen, die du am Ende aufführst, verweise ich hier mal auf Dieter Nuhr ;-) @Stefan: Zitat:
|
Re: Delphi objektfähig machen
Zitat:
![]() Außerdem hat man, wenn man die System.pas auf das Nötigste kürzt, schon eine Möglichkeit. Z.B. kann man Delphi .obj-Dateien erzeugen lassen, und dann mit speziellen Tools daraus eine Flat-Binary (also ohne PE-Header und Co machen). Sonst könnte man auch noch versuchen aus einer EXE den Code-Teil zu extrahieren, und die Basis-Address auf 00000000 anstatt 00400000 zu setzten. Zitat:
![]() @stefan2005: Ich habe auch mal probiert das mit Delphi zu machen, aber es gibt zwei Gründe warum ich aufgegeben habe: 1.) Ich werde Delphi auf dem neuen OS nicht neu kompilieren können und daher keine nativen Module oder nativen Treiber erstellen können. Zwar könnte man einen PE-Patcher schreiben oder PE selbst verwenden, aber das schränkt doch sehr stark ein. 2.) Die Übersetzung der System.pas ist sehr sehr sehr aufwändig. Die Windows-API Aufrufe sind nicht so sehr das Problem, sondern eher daß viele Funktionen in der System.pas ein fertiges BS mit vielen Highlevel Funktionen vorraussetzen und daher kaum Kernelmodule erstellt werden können. Was im Moment keine Probleme macht weil es fehlt, wird nach Erweiterung des Programms/Treibers dann doch gebraucht. Noch ein Problem: Viele Funktionen setzten den User-Modus(also Ring 3) wo der Speicher geschützt ist vorraus, z.B. um fehlerhafte Pointer zu erkennen (erste 64 KB sind immer geschützt, Pointer in diesem Bereich=Zugriffsverletzung). Diese Vorrausetzungen sind im Kernel-Modus alle unangenehm und potentiellen Fehlerquellen. Fazit: So schön es wäre den Delphi-Compiler zu verwenden, meiner Meinung nach ist FreePascal hier besser geeignet. Natürlich ist es möglich Delphi-Kompilate zu verwenden, aber ich frage mich ob der Arbeitsaufwand sich lohnt. Außerdem müßtest Du Dir die Professional kaufen, denn den SoureCode darf man nicht weitergeben. |
Re: Delphi objektfähig machen
Wegen der implementierung von TObject: Der Freepascal-Compiler muss doch imho genau das auch implementieren und ist OpenSource. Es muss also keine Delphi-Pro gekauft werden, sondern nur die entsprechenden UNits (eventuell mit dem Compiler) runtergeladen werden.
Wenn du dir nur den Source als "Gedächtnisstütze" ansehen willst, kannst du dir imho auch eine Delphi-Trial runterladen und dir die Sourcen ansehen. Ich weiß jedoch, wie legal das ist ;) |
Re: Delphi objektfähig machen
hi,
das mit Freepascal ist ne gute Idee. Aber in einer Delphi Trial sind doch sicherlich nicht die Sources dabei, oder ? cu, stefan2005 |
Re: Delphi objektfähig machen
Zitat:
|
Re: Delphi objektfähig machen
Zitat:
Natürlich sind da keine Saucen bei. ;) |
Re: Delphi objektfähig machen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Stafan2005!
Stöbere grad hir bissl rum und finde diesen Thread. Ich kann Dir die Objects Unit aus Freepascal anbieten, nach Delphi portiert. Zitat:
VenomGFX (go32 Version) gfx (Leider nur Turbo Pascal und damit 16 Bit) grx (Leider mit Borland C++ 4.5 als .lib vorcompiliert. Freier BCC++ Compiler hat Version 5.5) Da mich das Problem auch interessiert, werde ich mich mal mit VenomGFX beschäftigen. Deren Funktionen werden nach folgendem Muster aufgerufen: VenomGFX-Funktion(Festerdatenstruktur,Koordinaten); Koordinaten :: x1,y1,x2,y2 Fensterdatenstruktur :: Bei VenomGFX ein Record Warum sollte es da nicht möglich sein, das Windows API nachzubilden. Und zwar mit Hilfe so einer Grafikbibliothek. Das Handle, das bei der Windows API statt der o.g. Fensterdatenstruktur mit übergeben wird, kann doch auf diese Datenstruktur zeigen. Beispiel:
Delphi-Quellcode:
Mag sein, das unter Windows das Handle wirklich nur eine Fensternummer darstellt. Wie ich aber bis jetzt das Windoes API verstanden habe, muß ich doch ohne VCL eine Fensterklasse registrieren indem ich eine Datenstruktur mit Anfangswerten belege und dann das Fenster mit diesen Anfangswerten erzeuge. Also ist doch das Handle wohl doch eher die Anfangsadresse dieser Struktur. Deshalb bin ich fest davon überzeugt, das ich mit einer geeigneten Grafikbibliothek, nehmen wir doch gleich vVenomGFX, das API nachgebildet werden kann.
FensterDatenstruktur = record
... die Definition der Struktur end; WINAPI function PutPixel(Handle: THandle; x,y: Integer); var var_Fensterdatenstruktur: Fensterdatenstruktur absolute Handle; begin VenomGFX_PutPixel(var_Fensterdatenstruktur,x,y); end; Ich habe mal die VenomGFX Bibliothek rangehangen. Außerdem die auf Delphi portierte Objects.pas, die ja für Freepascal freigegeben ist. Außerdem die Units Dos und Dpmi, die von der nach Delphi portierten go32 Unit verwendet werden. Dos und Dpmi stammen aus dem WDosX Projekt von Michael Tippach. Die Moderatoern bitte ich, die angehangenen Quelltexte in der Delphi Praxis verfügbar zu machen. Viel Erfolg wünscht Dir Traudix |
Re: Delphi objektfähig machen
hi,
Vielen Dank ! :-D ich werds mir dann morgen mal genauer anschauen ! cu, stefan2005 |
Re: Delphi objektfähig machen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Stefan2005!
Hier noch eine Datei, die ich vorhin vergessen habe, mitzuliefern. Die brauchst Du, um die Objects.pas erfolgreich zu übersetzen. Ich hoffe, das läuft dann. Habe nämlich die portierten Units noch nicht weiter getestet. Soweit ich weiß, brauchst Du für go32 die cwsdpmi.exe, die aber bei Freepascal für DOS dabei ist. Sonst findest Du die auch im Internet. So, und nun noch einmal die grf.zip, ergänzt um die fehlende .inc Datei, die Objects.pas noch haben will. Es ist WDosGetmem.inc Dann müßte es eingentlich funzen. Traudix |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:41 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