Hallo,
wie der Titel schon beschreibt will ich per Code zur Laufzeit (beim Start der Anwendung) entscheiden, ob
{$APPTYPE CONSOLE} über der uses-Klausel verwendet wird oder nicht.
Ich hab mir das in etwa so gedacht
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
| uses SysUtils;
const Visibility: Boolean = false;
{$IF Visibility} {$APPTYPE CONSOLE} {$IFEND}
procedure SetVisibility(const Value: Boolean); begin Move((@Value)^, (@Visibility)^, SizeOf(Boolean)); end;
function GetVisibility(): Boolean; begin Result := Visibility; end;
begin try if ParamStr(2) = '-show' then SetVisibility(true);
if GetVisibility then ReadLn; except on E: Exception do WriteLn(E.ClassName, ': ', E.Message); end; end. |
was leider nicht funktioniert, da das Kompiler-Direktive
{$IF } nur absolute Konstanten verwendet/verwenden will/wie man es auch nennen möchte...
Was wohl bedeuten soll:
Delphi-Quelltext
1: 2:
| const MyConst = true |
funktioniert (wobei hier die
SetVisibility-Procedure versagt, da sie den Wert für die Konstante nicht setzen kann), und
Delphi-Quelltext
1: 2:
| const MyConst: Boolean = true |
nicht funktioniert.
Ich hab mir schon überlegt das über eine seperate Anwendung laufen zu lassen, das über einen Parameter entscheidet ob
die sichtbare Konsolenanwendung extrahiert wird oder eben die nicht sichtbare Anwendung (...was eigentlich Quatsch wäre, finde ich
)
Gibts für sowas eine Lösung? Hab nichts per Google oder Forum-Suche gefunden (oder einfach falsche Stichwörter benutzt
)
Mit freundlich Grüßen
final