Maximale übergabeparameter ??
-
Ermittel mal die Länge der gesamten Kommandozeile die du ausführst und schau mal ab wievielen Zeichen es nicht mehr geht.
Habs bei mir eben mal getestet und eine Kommandozeile mit ~6000Zeichen Länge (1000 Parameter) waren kein Problem.
-
über komandozeile selbst hab ich es auch schonmal mit 100000 getestet ging auch dauerte ne ewigkeit aber ging
aber über so ein programm das mit argv[] die parameter bekommt gehts bei mir halt net
kannst du mal mein programm compilieren und testen ob du da drauf auch mehr als 20 draufgezogen bekommst
men ziel ist halt ich muss 272 dateien auf einmal auf das ding werfen können im ende und alle 272 sollen dann gedruckt werden und das geht irgendwie 0
-
Ich denke mal, wenn Windows nicht einmal dein Programm startet bei zu vielen Parametern, kannst du schwerlich was dagegen tun..
-
MatthiasTheOne schrieb:
und Bashar
ich kann auch keine ausgabe machen
Warum? Da oben ist doch der Code.
-
über komandozeile selbst hab ich es auch schonmal mit 100000 getestet ging auch dauerte ne ewigkeit aber ging
aber über so ein programm das mit argv[] die parameter bekommt gehts bei mir halt net
Ehm und du weißt schon das die Kommandozeilenargumente in &argv[1] gespeichert werden?
#include <iostream> #include <string> #include <vector> #include <cstdlib> #include <sstream> void print_vector(const std::vector<std::string>&, const std::string&, const std::string&) int main (int argc, char* argv[]) { if (argc == 0) { std::clog << "Keine Parameter übergeben!" << std::endl; std::cin.get(); return 0; } std::vector<std::string> parameter(&argv[1], &argv[argc]); print_vector(parameter, "PS_Drucker1", "010.004.065.034"); std::cin.get(); } void print_vector(const std::vector<std::string>& data, const std::string& device, const std::string& host) { for (std::vector<std::string>::const_iterator it = data.begin(); it != data.end(); ++it) { std::clog << "\"" << (*it) << "\" wird gedruckt ..." << std::endl; std::ostringstream ss; ss << "lpr -S" << host << " -P " << device << " -d \"" << (*it) << "\""; std::system(ss.str().c_str()); } }... std::vector hat auch verschiedene Konstruktoren ... globale Variablen sind doof und böse ^^ system ist im Namespace std ...
-
Ja aber wenn ich mein programm mit 30 parametern starten mag und die nur ausgeben mag, dann startet es ja auch schon nicht
es ist egal ob ich den lpr ausfhren mag oder ob ichs program umschreibe, und sage geb alle parameter aus
wen ich 30 dateien auf eine exe ziehen kommt der fehler und tschüss
Ich hoffe noch jemanden zu finden der mir wenigstens meien theorie bestätigen kann, das ddes am windoof liegt oder an der komandozeile oder am befehl selbst ^^
Danke
-
ok sry hab den letzten beitrag ghier auf 2ter page net gelesen ^^ ich schaus mir nachher mal an

dank dior jedenfalls 4 hilfe ^^
-
Wenns garnicht startet, dann kannst du es so wie ZIP mit ner SendTo Extension machen, da kann man mehrere Dateien markieren und als ZIP verpacken lassen.
-
ja ok mit folgendem code gehts nun mus ich zwar noch bissel vereinfachen da ich so meine programme eigentlich net schreibe

#include <iostream> #include <string> #include <vector> #include <cstdlib> #include <sstream> void print_vector(const std::vector<std::string>& data, const std::string& device, const std::string& host) { for (std::vector<std::string>::const_iterator it = data.begin(); it != data.end(); ++it) { std::clog << "\"" << (*it) << "\" wird gedruckt ..." << std::endl; std::ostringstream ss; ss << "lpr -S" << host << " -P " << device << " -d \"" << (*it) << "\""; std::system(ss.str().c_str()); } } int main (int argc, char* argv[]) { if (argc == 1) { std::clog << "Keine Parameter übergeben!" << std::endl; std::cin.get(); return 0; } std::vector<std::string> parameter(&argv[1], &argv[argc]); print_vector(parameter, "hold_PS_SPS2", "10.53.34.34"); std::cin.get(); }aber das programm läuft
ich hab zwar nun wieder nen lpr fehler das man imer nur 11 gesendet bekommt und lpr dan 1minute timeout bekommt bevor er weiter macht mit 12.... aber das liegt ja nun nicht mehr am programm sondern am lpr befehl
kennt sich da mit wer aus von euch ???
Lpr macht immer nur 11 dateien danach is ne minute pause da steht das programm und danach machts wieder elf also bis 22 hoch dann stehts wieder und so weiter
liegt das an meinem serverdrucker das der irgendwann overload meldet oder liegt das am befehl lpr ?? danke
-
Nachricht @ (D)Evil
kannst du mir vieleicht erklären wie ich von meinem code auf deinen komme ^^Ich kenn mich in c++ eigentlich gut aus aber solche befehle wie
clog << "\"" << (*it) << "\" wird gedruckt ..." << endl;
oder
void print_vector(const vector<string>& data, const string& device, const string& host)
hab ich jetzt noch net benuttz ^^
könntest du mir den grade eben geposteten code oben der große block von dir vieleicht mal ändern bissel erklären ^^
wäre nett ^^ sitze hier grade vor nem funktionierendem programm aber ka wies geht ^^
danke
-
Wie soll den das eine Programm funktionieren und das andere nicht, wenn Windows ein Problem mit zuvielen Parametern hat? Habs gerade mal mit einer leeren main funktion versucht und die kann auch nicht gestartet werden, wenn man zuviele Dateien drauf dropt.
-
/********* print_vector :: functions ********/ /* parameter: */ /* - data: vector of strings to print */ /* - device: string containing device */ /* - name */ /* - host: string containing host id */ /* return: */ /* - void: no error codes */ /* describtion: */ /* use system application lpt to print */ /* the content of 'data' on printer */ /* 'device' */ /********************************************/ void print_vector(const std::vector<std::string>& data, const std::string& device, const std::string& host) /* Du übergibst der Funktion eine konstante(da du nichts an den Werten änderst) Referenz eines */ /* Vektors von std::strings, eine konstante Referenz auf einen std::string der den Drucker enthält */ /* und noch eine konstante Referenz auf einen std::string die die Host-IP enthält. */ { for (std::vector<std::string>::const_iterator it = data.begin(); it != data.end(); ++it) // Iterator-Pattern; konstanter Wert da *it nicht verändert wird. { std::clog << "\"" << (*it) << "\" wird gedruckt ..." << std::endl; /* std::clog(standard stream std::cout). */ /* Kann auf einen filestream odg. */ /* umgeleitet werden. std::clog ist zum */ /* mitschreiben von Programmabläufen. */ std::ostringstream ss; ss << "lpr -S" << host << " -P " << device << " -d \"" << (*it) << "\""; /* entspricht deinem zusammefügen */ /* durch operator+ */ std::system(ss.str().c_str()); } } int main (int argc, char* argv[]) { if (argc < 1) /* Es ist in argv nur der Programmpfad */ /* enthalten! Das nützt uns nichts. */ { std::cerr << "Keine Parameter übergeben!" << std::endl; /* std::cerr für Fehlermeldungen gedacht. */ std::cin.get(); /* std::cin.get() ließt ein Zeichen ein */ return -1; /* -1: Es ist ein Fehler aufgetreten */ } std::vector<std::string> parameter(&argv[1], &argv[argc]); /* std::vector hat einen Konstruktor */ /* Iterator begin, Iterator end. */ print_vector(parameter, "hold_PS_SPS2", "10.53.34.34"); /* Daten an print_vector übergeben */ std::cin.get(); /* Auf Eingabe warten */ }... sollte als Erklärung genügen ...
-
also an kilo
wenn ich das neue nehm und es mit 150 dateien bewerfe geht es
das alte ging netweiß zwar ent warums bei dir net geht aber bei mir arbeitet der alle 150 dateien ab. zwar immer im doofen 11er schritten und mit 1min pause zazwischen aber er amchts
und an devil danke für die erklärungen ich les es mir gleioch mal durch
-
na lol
150 gehen aber wenn ich nun 270 draufhaue gehts auch wieder net

oh meno was denn windoof für ne scheis erfindung echt
des nerft mich grade total das man net einfach so viee übergeben kann wie man will naja
Danke erstmal an alle die hierbei geholfen haben war sehr nett
TREAD CLOSE PLS