Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi MS-DOS-Anwendung mit Delphi-Klassen? (https://www.delphipraxis.net/97527-ms-dos-anwendung-mit-delphi-klassen.html)

stz 12. Aug 2007 10:08


MS-DOS-Anwendung mit Delphi-Klassen?
 
Moin moin,
gibt es eine Möglichkeit, meine Klassen weiter zu verwenden und mit ihnen eine Anwendung für MS-DOS zu erstellen*? So weit ich weiß, unterstützt Turbo Pascal keine Klassen und alle Delphi-Versionen, die auf Object Pascal basieren, können keine 16-Bit-Anwendungen erstellen...

Gruß
Malte

*Bitte nicht Konsolenanwendung mit 16-Bit MS-DOS-Anwendung verwechseln

SirThornberry 12. Aug 2007 10:10

Re: MS-DOS-Anwendung mit Delphi-Klassen?
 
mit Delphi1 kann man soweit ich weiß auch Konsolenanwendungen erstellen (16bit) allerdings weiß ich nicht ob diese auch unter Dos laufen oder nur unter win3.11
Die grafischen Sachen sind unter Dos natürlich nicht vorhanden da diese auf die Windowsbibliotheken aufbauen. Aber nicht visuelle Dinge sollten nicht das Problem sein.

mkinzler 12. Aug 2007 10:16

Re: MS-DOS-Anwendung mit Delphi-Klassen?
 
Die Delphi-Rt setzt auf die Windows-API auf. Du wirst also mit Delphi keine Programme entwickeln können, welche auf reinem Dos funktionieren ohne eine alterantive RTL zu verwenden. Es gab mal Ansetzte dafür.

http://tippach.business.t-online.de/wdosx/

Bernhard Geyer 12. Aug 2007 10:19

Re: MS-DOS-Anwendung mit Delphi-Klassen?
 
D1 wäre (wie schon geschrieben) die einzige offizielle versuch. Ob man mit D > 1 und irgendwelchen DOS-Extendern was machen könnte (War da nich mal vor ein paar Jahrem in "Entwickler-Magazin" ein Artikel :gruebel:) müsste man sich ergoogeln.

Aber in Zeiten von .NET 2/3 und Win64 wäre es wohl mehr als Verschwendung wenn man noch in einer aktuellen Delphi-Version für 16-DOS kompilieren könnte.

Hawkeye219 12. Aug 2007 10:26

Re: MS-DOS-Anwendung mit Delphi-Klassen?
 
Hallo Malte,

die DWPL-Bibliothek setzt auf dem DOS-Extender WDosX von Michael Tippach auf. Das Projekt ist aber offenbar eingeschlafen, die letzte Version der Bibliothek stammt aus dem Jahr 2004.

Ein relativ neuer DOS-Extender ist HX DOS. Auch er verspricht eine Zusammenarbeit mit Delphi und soll sogar OpenGL-Anwendungen unter DOS ermöglichen.

Gruß Hawkeye

3_of_8 12. Aug 2007 10:39

Re: MS-DOS-Anwendung mit Delphi-Klassen?
 
@SirThornberry: Soweit ich weiß, ist Win 3.x (und auch 9x und ME) nichts anderes als ein graphischer Aufsatz auf MSDOS, Win 3.x musste man sogar noch über MSDOS starten. Das heißt also, wenn die Anwendungen unter Win 3.x laufen, laufen sie definitiv auch unter DOS.

SirThornberry 12. Aug 2007 10:53

Re: MS-DOS-Anwendung mit Delphi-Klassen?
 
naja, consolenanwendungen die unter win95 laufen bringen trotzdem unter Dos ab und an die Meldung das sie nicht in Dos-Mode laufen. Aber bei Win3.11 bin ich mir auch zu 99,9% sicher das es nur ein grafisches "Programm" war was unter Dos läuft. Allerdings weiß ich nicht sicher ob Programme feststellen konnten ob sie innerhalb dieses "programmes" ausgeführt wurden.

grenzgaenger 12. Aug 2007 11:17

Re: MS-DOS-Anwendung mit Delphi-Klassen?
 
Delphi-Quellcode:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type ttest = object
  constructor init;
  destructor done;
  procedure  main;
end;
 

constructor ttest.init;
begin
 //initialisierung der klasse resp. des objekts
end;

destructor ttest.done;
begin
 //aufräumarbeiten
end;

procedure ttest.main;
begin
 //hier liegt der code (hauptschleife)
 writeln('inside object');
end;

var
 t: ^tTest;
begin
 new(t); //instanz erzeugen
 t^.init; //objekt initialiseren
 t^.main; //objekt ausführen
 t^.done; //allokierten speicher freigeben
 dispose(t); //intanz freigeben
 readln;
end.
turbo pascal ab version 5.5 unterstützt klassen. diese werden ebenfalls wieder in delphi 2006 unterstützt, du kannst daher die codes zwischen TP5.5 und D2006 austauschen und einfach neu kompilieren.

du kannst aber mit delphi keine DOS anwendungen kompilieren, diese sind nur quelltextkompatibel... während du mit TP7 z.b. WIN programme erstellen kannst...

wenn du also wirklich noch etwas für DOS erstellen willst, so rate ich dir, hohl dir den TP compiler aus dem museum und verwende ihn... die codes kannste dann 1:1 mit delphi weiterverwenden.

noch einen schönen sonntag.

grenzgaenger 12. Aug 2007 11:25

Re: MS-DOS-Anwendung mit Delphi-Klassen?
 
Zitat:

Zitat von 3_of_8
@SirThornberry: Soweit ich weiß, ist Win 3.x (und auch 9x und ME) nichts anderes als ein graphischer Aufsatz auf MSDOS, Win 3.x musste man sogar noch über MSDOS starten. Das heißt also, wenn die Anwendungen unter Win 3.x laufen, laufen sie definitiv auch unter DOS.

ja, hast recht, WIN 3.x ist 'n grfx DOS aufsatz. was aber nicht heisst, dass die programme welche für WIN 3.x entwickelt wurden auch unter DOS laufen... da WIN 3.x eigene programmierschnittstellen zur verfügung stellte, so wie z.b. XP oder Vista... was ja das selbe ist. deswegen würdest du wohl nicht auf die idee kommen, 'n XP programm, in welchem du die UID von XP holen möchtest und ausgeben, das progry auch unter DOS laufen lassen möchtest.. da es dort z.b. diese funktion gar nicht gibt und dein progry wird sich im besten fall mit einer schönen fehlermeldung bedanken oder gar den ganzen rechner mit reissen...

tja, noch einen schönen sonntag.

SirThornberry 12. Aug 2007 11:26

Re: MS-DOS-Anwendung mit Delphi-Klassen?
 
@grenzgaenger: wird vererbung in dieser TP-Version auch schon unterstützt?

mkinzler 12. Aug 2007 11:33

Re: MS-DOS-Anwendung mit Delphi-Klassen?
 
TP kennt aber nur die alte Pascal-OOP (Object).

grenzgaenger 12. Aug 2007 11:38

Re: MS-DOS-Anwendung mit Delphi-Klassen?
 
ja, die vererbung wird auch schon unterstützt. du musst hierfür nur das wort class gegen object austauschen. z.b.

Delphi-Quellcode:
type ttest = object
  constructor init;
  destructor done;
  procedure  main;
end;
punkt = object(ttest)
 x, y: integer;

end;
kreis = object(punkt)
 radius: integer;
end;
die vererbung war seit tp5.5 implementiert. andere features kammen aber erst zu einem späteren zeitpunkt hinzu, so, dass nicht mehr mit der dereferenzierung auf die methoden zugegriffen werden muss, dafür um das auseinanderzuhalten, hatte dann borland das schlüsselwort object gegen class getauscht (da fielen dann auch new und dispose weg).

wie gesagt, wenn man sich an den PASCAL sprachvorrat hält, und nicht die delphi spezifischen erweiterungen verwendet, so kann man auch mit delphi programme entwickeln, welche auf DOS ebene rekompiliert weden können. hier muss man aber auch mit den units aufpassen... das beispiel wurde mit d2006 erstellt und somit ist die unit sysutils vorhanden, diese gab es aber zu TP's zeiten nicht. auch gibts z.b. keine class operatoren, operator overloading, properties, etc.... allso alles was das leben schön macht... :-) pascal hat sich ja auch weiterentwickelt und nicht grad zum schlechteren :-)

grüsse und noch einen schönen sonntag.

grenzgaenger 12. Aug 2007 11:41

Re: MS-DOS-Anwendung mit Delphi-Klassen?
 
Zitat:

Zitat von mkinzler
TP kennt aber nur die alte Pascal-OOP (Object).

delphi kennt das Object auch erst wieder seit D2006 ;-) .

Hawkeye219 12. Aug 2007 12:02

Re: MS-DOS-Anwendung mit Delphi-Klassen?
 
Hallo,

natürlich ist es möglich, die "alten" Objekte zu verwenden, sie werden von allen bisherigen Delphi-Version unterstützt. Eine (Rück-)Portierung von vorhandenem Object-Pascal-Quellcode auf den Stand von Delphi 1 oder gar Turbo Pascal dürfte allerdings mit einem hohen Aufwand verbunden sein:

- neuere Sprachelemente dürfen nicht eingesetzt werden (z.B. dynamische Arrays, Interfaces,...)
- es dürfen nur ShortStrings verwendet werden (max. 255 Zeichen)
- Sichtbarkeits-Direktiven existieren nicht (ganz oder teilweise)
- Properties existieren nicht (Turbo Pascal)
- Überschreiben von Routinen mit VIRTUAL statt OVERRIDE (Fehlerquelle!)
- 64-KByte-Grenze für Code und Daten (jedenfalls ohne Overlays, XMS, EMS o.ä.)

Dies sind nur einige Punkte, die zu beachten sind. Eine Verwendung der genannten DOS-Extender ist sicher mit einem anfänglichen Aufwand verbunden. Wenn aber die ersten Hürden überwunden sind, kann man mit dieser Kombination recht komfortabel sehr komplexe Anwendungen für DOS entwickeln. Immo Waches Dokumentation zu DWPL zeigt, daß diese Lösung im industriellen Bereich eingesetzt wurde - und vielleicht auch noch wird. Neuentwicklungen werden wahrscheinlich eher auf Windows CE oder Linux aufsetzen.

Gruß Hawkeye

mkinzler 12. Aug 2007 12:03

Re: MS-DOS-Anwendung mit Delphi-Klassen?
 
Man könnte auch die Lauffähigkeit auf FPC testen.

grenzgaenger 12. Aug 2007 12:11

Re: MS-DOS-Anwendung mit Delphi-Klassen?
 
Zitat:

Zitat von Hawkeye219
Hallo,

natürlich ist es möglich, die "alten" Objekte zu verwenden, sie werden von allen bisherigen Delphi-Version unterstützt. ...
Gruß Hawkeye

dies ist nur für die delphi versionen zutreffent, nicht jedoch für TP. da die object klassen erst wieder ab d2006 unterstützt werden.

es gibt doch noch TP, warum sollte man da auf dos extender zurückgreifen?

frag mich aber, wieso soll das noch DOS sein? das system ist doch praktisch ausgestorben....

stz 12. Aug 2007 12:15

Re: MS-DOS-Anwendung mit Delphi-Klassen?
 
Zitat:

Zitat von mkinzler
Man könnte auch die Lauffähigkeit auf FPC testen.

Was ist / kann das?
Zitat:

Zitat von grenzgaenger
frag mich aber, wieso soll das noch DOS sein? das system ist doch praktisch ausgestorben....

Offensichtlich nicht, so wie der Thread brodelt :wink:

Vielen Dank, jetzt hab ich erstmal ganz viel zum Basteln :coder:

Gruß
Malte

mkinzler 12. Aug 2007 12:17

Re: MS-DOS-Anwendung mit Delphi-Klassen?
 
Zitat:

dies ist nur für die delphi versionen zutreffent, nicht jedoch für TP. da die object klassen erst wieder ab d2006 unterstützt werden.
Was wilst du damit aussagen.
Die alten, mit TP5 eingeführte OOP mit dem Schlüsselwort OBJECT wird von allen (nicht .Net)Delphiversionen unterstützt.
Zitat:

[Edit:
Was ist / kann das?
FPC = FreePascal-Compiler
}

DGL-luke 12. Aug 2007 12:18

Re: MS-DOS-Anwendung mit Delphi-Klassen?
 
@grenzgaenger: Was hat TP mit Delphi2006 zu tun? Die Turbos haben mit TP ja wohl außer dem Namen rien garnix zu tun.

grenzgaenger 12. Aug 2007 12:30

Re: MS-DOS-Anwendung mit Delphi-Klassen?
 
doch, haben sie. die codes aus TP lassen sich in d2006 kompilieren...

@mkinzler: kommt drauf an, was du als .Net-delphi bezeichnest.. in D2005 wurde, soviel ich weiss, die OBJECT unterstützung herausgenommen... zu D6 war sie zuvor noch drin. muss mich daher teilweise korrigieren.

grüsse und noch 'n schönen sonntag.

Sunlight7 13. Aug 2007 05:01

Re: MS-DOS-Anwendung mit Delphi-Klassen?
 
Zitat:

Zitat von SirThornberry
Aber bei Win3.11 bin ich mir auch zu 99,9% sicher das es nur ein grafisches "Programm" war was unter Dos läuft. Allerdings weiß ich nicht sicher ob Programme feststellen konnten ob sie innerhalb dieses "programmes" ausgeführt wurden.

Das "Programm" heißt KRNL386.EXE und MS-DOS Programme die in einem DOS-Fenster in Win 3.x laufen können feststellen, ob Windows läuft oder nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16: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