Parameterübergabe ans main ohne Kommandozeile
-
Oje...
und irgendwie über die Eingabeaufforderung geht das nicht???
warum muss das denn so kompliziert sein???
-
Eine Batchdatei ist doch ganz entfernt sowas wie die Eingabeaufforderung.

Blos bei der Eingabeaufforderung schreibst du immer einen Befehl und läßt ihn ausführen und musst ihn immer wieder neu schreiben, wenn du ihn wieder ausführen willst.
Eine Batchdatei ist eine Sammlung von Befehlen, die du speichern kannst und die immer wieder ausgeführt werden kann, was sich gerade beim Testen praktisch macht.
Du kannst natürlich auch dein Programm immer einzeln von der Kommandozeile aus aufrufen.
PS: Du hast nach DOS angefangen, oder?

-
Ich weiß was eine Batchdatei ist...

dieses Programm was ich geschrieben hab soll nachher in Word importiert werden, und dort soll der komplette Pfadname der Datei einfach an das programm übergeben werden, mittels VB, funktioniert das dann auch nochmit einer batchdatei, ich kann mir das im moment nicht vorstellen...
-
Hmm, wie das später von VB aus geht, keine Ahnung aber die Batchdatei war nur dafür gedacht, dass du das mit mehreren Dateien auf einmal testen kannst.
Wenn du das immer nur mit einer testen willst (dann hätte ich dich falsch verstanden), dann kannst du auch einfach die Eingabeaufforderung nehmen.

Oder eben die Verknüpfung, da du ja irgendwie keine Eingabeauffordeung zu haben scheinst.Ich hoffe ich habe dich jetzt richtig verstanden.

-
Also nochmal:
Später soll der Dateiname über VB an das Programm übergeben werden und das muss ich doch irgendwie hinbekommen, das ich diesen String, wie auch immer, an das Programm übergeben kann und ich hatte mir gedahct das das vielleicht über die dos eingabeaufforderung geht, weil ich sonst überhaupt keine Idee habe wie ich einen Parameter übergeben kann, der variabel geändert werden kann.
Aber dann kommt das nächste problem, mir fehlt dann der Befehl mit dem ich die exe erzeugen kann, quasi: kompileraufruf.
und wenn ich dann die exe habe, wie der programm aufruf in der eingabeaufforderung geht prog.exe -dateiname?? oder prog.exe(dateiname)??mein main hat doch die form
int main(int argc, char *argv[])*verzweifel

-
Hmm also ein Problem kann ich lösen:
Wie man die Exe aufruft. Dafür gibt es "Richtlinien", so wird es immer gemacht.
Zuerst der Exename, das muss sein. Dann muss ein Leerzeichen kommen. Dann kommen die Parameter. Dateinamen werden IMHO ohne weitere Zeichen übergeben.
Die Sachen mit - bzw. / heißen Optionen oder auch Schalter, sowas scheinst du nicht zu brauchen. Außerdem legt das Programm selber (bzw der Programmierer) fest, in welcher Reihenfolge und so weiter die Parameter stehen müssen.Normales Aussehen wäre also:
prog.exe dateinameDein Main sieht auch richtig aus.
Aber was ich nicht verstehe: Warum willst du dein Programm neu kompilieren?

Also, das geht, kein Ding: Du kannst das Kompilieren per Kommandozeile machen, musst mal msdev /help eingeben.
Aber das ist nicht nötig, nur weil die Exe einen anderen Parameter bekommt.Wie kommst du darauf, dass das nötig ist? Ist doch nur eine Variable, die einen anderen Inhalt haben kann.

Schreib den Dateinamen mal nur zum Testen in die Projekteigenschaften ein. Dann kannst du das nämlich debuggen. Das ginge sonst nicht bzw. nur kompliziert.
-
Ok ich probier das nochmal!!
wenn ich den namen in die eigenschaften eintrage bekomm ich immer noch meine fehlermeldung das kein dateiname angegeben wurde...
und seit neuestem auch die meldung
char ** kann nicht in const char * konvertiert werden
-
Zeig doch mal den teil im Main wo du den Dateinamen ausliest.

Das klingt nach Quelltextfehlern und eventuellen Logikfehlern.
-
also:
int main(int argc, char *argv[]){
fin.open(&argv[1],ios_base::in|ios_base::binary)
...
danach arbeite ich dann mit fin weiter und les die sachen aus die ich brauche
}
-
Bist du sicher, dass das & da hin muss? Daher könnte der Fehler mit dem char** kommen.
Was steht in argc?
Wie rufst du dein Programm auf? (Ich fürchte mit F5, dann kann ich nicht mehr helfen, weil ich das alte VC habe.)
Was steht in argv[1]?
Schlimmstenfalls ruf das Programm von der Eingabeaufforderung aus auf und lass dir das ausgeben.
-
estartu_de schrieb:
Bist du sicher, dass das & da hin muss? Daher könnte der Fehler mit dem char** kommen.
Was steht in argc?
Wie rufst du dein Programm auf? (Ich fürchte mit F5, dann kann ich nicht mehr helfen, weil ich das alte VC habe.)
Was steht in argv[1]?
Schlimmstenfalls ruf das Programm von der Eingabeaufforderung aus auf und lass dir das ausgeben.
------------------------------------------------------------------------------
ALSO es geht!!!
das & ist völlig überflüssig, bin mir auch nicht sicher in welcher geistigen umnachtung das dahin gekommen ist...
in argv[1] steht der parameter
es funktioniert wenn ich den dateinamen in die eistellungen mit reinschreieb und auch wenn ichs über die eingabeaufforderung starte
Danke, dass du dir soviel Zeit genommen hast!!!
der tag ist damit gerettet!!!!
-
Das freut mich.

Mal gucken ob wer meinen Tag rettet - verdammte Resourcen, das ging doch die Tage noch...
