VisualBasic Text in Konsole ausgeben

Krik

Fleet Admiral
Registriert
Juni 2005
Beiträge
15.023
Moin,

ich verwende VB6.

Ich habe ein Programm geschrieben, dass durch Command$ auf Befehlszeilenparameter reagiert. Wenn das Programm allerdings einen Parameter nicht interpretieren kann oder wenn die Hilfe über die Konsole (zB /? oder /help) ausgegeben werden soll, muss ich ja irgendwie was machen.

Nur was genau?

Ich habe ein wenig im Internet rumgesucht, aber nur einen Code gefunden, der mir meine eigenes Konsolenfenster (= neues Konsolenfenster) öffnet. Ich möchte gerne in das Konsolenfenster schreiben, dass mein Programm aufgerufen hat.

Gruß, Laurin
 
Du kannst doch vorher Prüfen lassen ob der Parameter gültig ist. Die Paramter die übergeben werden stehen doch als String direkt im Command$

Code:
If Command$ = "/?" then
  blabla
elseif Command$ = sonstwas
  blabla
End if

Vielleicht verstehe ich dein Problem auch falsch.
 
Jupp, falsch verstanden. ^^
Das mit Command$ ist mir klar.

Er soll halt nur in der Konsole Rückmeldung geben, wenn /? als Parameter übergeben wurde.
so ala
C:\programm.exe /?
Hey-ho! Das ist mein Programm und du hast gerade die Hilfe angefordert.
Diese Parameter sind zulässig:
/1 - ...
/2 - ...

C:\
Ist das klarer formuliert?
 
Die Thematik klingt simpel, ist aber nicht ohne großen Aufwand mit VB6 zu machen. Du kannst nicht in die Kommandozeile direkt schreiben. Das war eins der größten Mankos mit VB6.

Du müsstest die Output Queue deines Programmes erst finden, umleiten und dann in den STDOUT der aktuellen Command Box schreiben. Trivial ist das nicht.

Ich würd mir was anderes überlegen. Eine MessageBox, Umleitung der Meldung in eine Datei, oder Umstieg auf aktuelle .NET Programmiersprache, wo du mit Console.WriteLine("Text") direkten Zugriff auf die CommandBox hast.
 
Doof. Nun ja, es wäre nicht das erste Mal, dass ich bei VB6 gegen eien Wand gelaufen bin. So ne grottige Sprache. Man merkt ihr das Alter vorne und hinten an.
 
Je nach Wichtigkeit für dich kann sich der Aufwand lohnen das mal nachzustellen:

http://www.nirsoft.net/vb/console_application_visual_basic.html


Geht im Kern darum dass der VB6 Compiler keine für die Commandozeile geflaggten .exe Dateien erstellen kann. Auf der Seite wird beschrieben, wie du eine normale .exe mit Flag für die GUI machst und diese dann nachträglich mit einem Hilfsprogramm modifizierst.
 
Man merkt ihr das Alter vorne und hinten an
Ich bin jetzt absolut kein VB Experte aber ich glaube die Situation ist genau anders herum: Viele "alte" Sprachen beginnen ganz selbstverständlich in den Hello-World Beispielen mit dem Schreiben auf die Konsole. Eine Textbox mit dem selben Inhalt hinzukriegen wäre aber ungleich aufwendiger und muss erst mühsam erlernt werden. (Mach mal als Anfänger in C / C++ ne Gui ohne .NET)

VB ist wohl eher "so neu" bzw besser gesagt "unter dem Gesichtspunkt entwickelt worden" dass damit keine KonsolenApps entwickelt werden, sondern Windows Anwendungen mit grafischer Benotzeroberfläche.

Bzw um was zum Thema beizutragen:
Wärs nicht ne alternative ein großes "Textfeld" (wie auch immer es in VB heißt^^) zu erstellen, was du wie eine Konsole benutzt? Jeden gewünschten Konsolen-Ouput kannst du dann direkt dort hinschreiben
 
Zuletzt bearbeitet:
Es stören mich viele Aspekte an VB6. Es geht weder richtig in die Richtung einer prozeduralen Programmiersprache wie das klassische (Q/Quick)BASIC, noch richtig in die objektorientierte Richtung (Java, etc.). Es ist ein halbgares Mischmasch.

Sie scheint mir nicht richtig durchdacht: Will man zB bei einem Label den angezeigten Text ändern, muss man die Eigenschaft "Caption" ändern. Bei einem Textbox Control ist es wieder rum die Eigenschaft "Text". Ich sehe keinen Grund darin, da verschiedene Bezeichnungen zu führen.
Andere Dinge sind unnötig kompliziert gestaltet. Ich habe es zB nicht hin bekommen, ein ListView Control mit Icons zu füttern, weil man dazu erst ein Picture-Objekt erstellen muss, das dann in eine ImageList packen muss, die dann wiederum irgendwie mit dem Control verknüpft wird. Das wäre ja kein Problem, man könnte ja einfach vom Control erben und da ein paar eigene Methoden samt List-Verwaltung etc. umsetzen. Geht aber nicht vernünftig, weil die Objektorientierung nicht wirklich ihren Namen verdient hat. Die haben sie laut Wikipedia erst in VB.NET richtig umgesetzt.

Für mich ist es eine grottige Sprache. Aber die Arbeit zwingt mich dazu, sie zu benutzen. :(

@easy.2ci
Für dieses Programm werde ich das nicht umsetzen, da ich das Feature gestrichen habe, aber trotzdem Danke für den Link.
 
Zurück
Oben