AGB  ·  Datenschutz  ·  Impressum  







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

Ausgabe in DOS-Box

Ein Thema von sabelrider · begonnen am 15. Dez 2003 · letzter Beitrag vom 29. Dez 2003
Antwort Antwort
sabelrider

Registriert seit: 30. Jul 2003
6 Beiträge
 
#1

Ausgabe in DOS-Box

  Alt 15. Dez 2003, 14:11
Hallo,

Mal ne kleine Frage. Ich hab ein Programm geschrieben. Wenn dieses Programm jedoch mit nem Parameter gestartet wird(-h), dann soll die Benutzung und die Parameter erklärt werden. Und zwar nur, wenn das Programm von ner DOS-Box aus aufgerufen wurde.
Das Programm soll also ganz normal als Windows-Programm fungieren aber unter der bestimmten Bedingung soll es so wie eine consolen-Anwendung arbeiten. WriteLn geht ja irgendwie mit nem GUI-Programm nicht. Und wenn ich {$APPTYPE CONSOLE} einbaue, öffnet sich zusätzlich zum Fenster ne DOS-Box, wenn ich das Programm ganz normal ohne Parameter starte.

Wie kann ich erreichen, dass ich WriteLn auch in nem GUI-Programm benutzen kann?
Oder wie kann ich ne Entscheidung machen und dann {$APPTYPE CONSOLE} setzen oder nicht?

Danke im Voraus,
sabelrider
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Ausgabe in DOS-Box

  Alt 15. Dez 2003, 18:53
Das IMHO nicht möglich, denn nur mit APPTYPE CONSOLE bleibt dein Programm in der schon geöffneten Konsole. Wenn du im nachhinein AllocConsole() aufrufst, bekommst du eine neue Konsole.

Was vielleicht funktionieren könnte ist folgendes:
Delphi-Quellcode:
{$APPTYPE CONSOLE}
...
if ParamStr(1) = '-Hthen
begin
  Halt(0);
end
else
  FreeConsole; // Konsole schließen
...
Das führt, wenn es überhaupt funktioniert, zu flickern, da kurzfristig eine Konsole geöffnet wird.
  Mit Zitat antworten Zitat
vbinsider

Registriert seit: 26. Dez 2003
Ort: Würselen
11 Beiträge
 
Delphi 7 Professional
 
#3

Re: Ausgabe in DOS-Box

  Alt 28. Dez 2003, 18:21
Es gibt bestimmt aber auch ne andere Lösung:

Denn: Wenn man sich den Registry-Editor von Windows ansieht, wird man feststellen, dass dieses Programm auch solch ein "Doppelleben" führt. Wird dieses Programm aus dem "Ausführen"-Dialog von Windows gestartet, so öffnet sich das standardmäßige Fenster mit dem Inhalt der Registry geöffnet.

Sobald man das Programm allerdings zum Beispiel aus der Konsole mit dem Parameter "/c blub.reg" startet und so eine neue Registry aus der Datei blub.reg erstellt, so läuft diese Aktion in der Konsole ab, ohne dass ein Fenster geöffnet wird. Das Gleiche passiert mit dem Parameter "/e".

In einem Artikel der PC-WELT wird beschrieben, dass man den DOS-Teil von Regedit per Programm als eigenständiges Programm abtrennen kann. Das muss doch auch umgekehrt gehen. Ich vermute, dass man ein DOS-Programm einfach vor das Delphi-Programm kopieren muss. So, wie ich den Artikel verstanden hab, führt Windows dann entweder den Windows-Teil oder den DOS-Teil aus, abhängig davon, ob man das Programm aus DOS oder Windows heraus startet.

Hoffe euch geholfen zu haben

vbinsider
Ein Atomkrieg am Morgen kann einem den ganzen Tag versauen.
  Mit Zitat antworten Zitat
sabelrider

Registriert seit: 30. Jul 2003
6 Beiträge
 
#4

Re: Ausgabe in DOS-Box

  Alt 28. Dez 2003, 19:01
Hiho,

hört sich interessant an!
Hast du den Link zu dem Artikel zufällig zur Hand?

Gruß,
sabelrider
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Ausgabe in DOS-Box

  Alt 29. Dez 2003, 16:35
Moin Sabelrider,

meinst Du das so:

Delphi-Quellcode:
program Project1;

uses
  Forms,
  Windows,
  Unit1 in 'Unit1.pas{Form1};

{$R *.RES}

begin
  Application.Initialize;
  if paramcount > 0 then begin
    Application.ShowMainform := false;
    AllocConsole;
    WriteLn('HALLO');
    ReadLn;
    FreeConsole;
    exit;
  end;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
Erstellt mit "Neues Anwendung", dann Projekt\Quelltext anzeigen. Anschliessend den IF Block eintragen, und die Unit Windows mit aufnehmen.
Zum Testen dann unter Start\Parameter einen Parameter eintragen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
sabelrider

Registriert seit: 30. Jul 2003
6 Beiträge
 
#6

Re: Ausgabe in DOS-Box

  Alt 29. Dez 2003, 23:03
Hallo Christian,

Danke! Das ist genau das, was ich gesucht habe.
Eigentlich hätte ich auch selber draufkommen können
Aber ShowMainform war mir unbekannt
Wieder was dazugelernt

Danke,
sabelrider
  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 09:20 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