Probleme mit ParamStr() und überhaupt ...
-
Schau dir mal den Parameter "argc" deiner main-Funktion an. Was könnte der möglicherweise bedeuten?
-
OK, argc dürfte die Anzahl der übergebenen Parameter sein ;o) arg count ... ok, sorry, dass war mein Fehler.
Jetzt aber noch eine andere Frage, die bestimmt genau so genial ist ;o) ich bekomme keine EXE erstellt von meinem Konsolenprogramm. Kann es zwar ausführen mit F9, aber ich bekomm wie gesagt keine EXE erstellt.
Schlagt mich nicht, wenns wieder an mir liegt.
-
sergio schrieb:
Aber es ist nicht die Aufgabe von PHP mir Verzeichnisse zu kopieren. Es handelt sich um Datenmnängen von über einem Gig. Bei PHP ist mir das zu unsicher. Timeouts, Abbruch des Scripts, etc.
Was ist denn deiner Meinung nach "die Aufgabe von PHP"?
Auch in PHP kann man Fehlerbehandlung etc. realisieren.Ausserdem bist du mit deinem Programm auf Windows-Server festgelegt und negierst damit einen der Hauptvorteile von PHP. Da du API-Funktionen verwendest kannst du den Code noch nichtmal durch neukompilieren für Linux o.ä. fit machen, sondern müsstest für andere Plattformen alles neuschreiben.
Was deine Exe betrifft, die wird mit Sicherheit erzeugt, sonst würde das Programm auch per F9 nicht starten.
-
Ja, das mit der Exe war mein Fehler. Klar ist sie da, wurde nur wo anders gespeichert. Eigentlich möchte ich mich nicht rechtfertigen, warum ich für eine Kopieraktion im Gig Bereich lieber ein Programm benutze, als PHP, aber ich machs mal ansatzweiße ...
Ich brauche eine Statusleiste mit Restzeit, aktueller Datei und einem Statusbalken. In PHP habe ich Hindernisse wie Timeouts, etc. und das könnte ich jetzt als so weiter machen.
Aber ich habe den Thread geöffnet um Hilfe bei meiner Frage zu bekommen und nicht um mich über PHP zu unterhalten ;o)
Was die plattformunabhängigkeit angeht. Das gesamte, was hauptsächlich in PHP geschrieben ist, läuft in einem 150000 Euro Windows Netzwerk. Also ist in diesem Fall Linux/Unix egal.
Naja, jetzt aber genug. Ich habe das was ich brauche jetzt fertig. Wens interessiert ...
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char* argv[]) { if(argc == 3) { // Überprüfe wieviele Argumente übergeben wurden. 1. Pfad, 2. Quellpfad, 3. Zielpfad AnsiString slSourceDir = argv[1]; // Zuweisung des Arguments einer Variable AnsiString slTargetDir = argv[2]; SHFILEOPSTRUCT sh; ZeroMemory(&sh, sizeof(sh)); sh.hwnd = NULL; slSourceDir+='\0'; // doppelte Nullterminierung sh.pFrom = slSourceDir.c_str(); slTargetDir+='\0'; sh.pTo = slTargetDir.c_str(); sh.fFlags = FOF_NOCONFIRMATION | FOF_NOERRORUI; // Keine Fehler- und Frageausgaben sh.wFunc = FO_COPY; // Kopiert die Verzeichnisse sh.hNameMappings = NULL; sh.lpszProgressTitle = NULL; if(!SHFileOperation(&sh)) { ShowMessage("KOPIERT"); } else { ShowMessage("FEHLER!"); } } else { ShowMessage("Zu wenig Parameter übergeben!"); } return 0; } //---------------------------------------------------------------------------
-
sergio schrieb:
Eigentlich möchte ich mich nicht rechtfertigen
Du brauchst dich nicht zu rechtfertigen, schliesslich geht es hier nicht um Anschuldigungen sondern lediglich um Unverständnis (meinerseits).
Ich brauche eine Statusleiste mit Restzeit, aktueller Datei und einem Statusbalken.
Wozu, wenn ich fragen darf? Dein Programm läuft doch auf dem Server, da sieht doch nie jemand die Fortschrittsanzeige!?
-
Dann habe ich vielleicht was falsch geschrieben oder du falsch verstanden, wie auch immer. Das worum es grad geht, ist für die Benutzer, bzw. Angestelten. Aus diesem Grund ist der Balken des Fortschritts am besten. Klar könnte man mit PHP auch viel machen, aber guck dir den C++ Code an. Das ist gar nichts im Gegensatz zu PHP mit der Funktionalität.
Wollte dich auch nicht anmachen und rechtfertigen war natürlich nicht so krass gemeint. Ersetze rechtfertigen mit darauf Bezug nehmen ;o)
-
sergio schrieb:
Das worum es grad geht, ist für die Benutzer, bzw. Angestelten.
Das verstehe ich nicht. Du lässt auf jedem Anwenderrechner lokal PHP laufen?
Wäre es da nicht sinnvoller, gleich eine "normale" Fenster-Anwendung, z.B. mit dem BCB zu schreiben?Entschuldige meine Neugier, aber bin einfach ... ähhh ... neugierig.

Und wenn ich jemanden eine Lösung verfolgen sehe, die ich für stark suboptimal halte, dann lässt mir das keine Ruhe.
-
Nein, klar habe ich einen Server ... IIS + PHP + MySQL.
Die Benutzer rufen alles vom Server ab. PHP eben. Das kleine Programm wird dann von dem PHP Script mit exec aufgerufen und kopiert mir die ausgewählten und per Parameter übergebenen Verzeichnisse.
-
sergio schrieb:
Das kleine Programm wird dann von dem PHP Script mit exec aufgerufen und kopiert mir die ausgewählten und per Parameter übergebenen Verzeichnisse.
Ja aber doch nur auf dem Server!? D.h. es werden ausschliesslich Dateien auf dem Server kopiert bzw. verschoben, und auch der Statusdialog wird lediglich auf dem Server angezeigt.
Es wäre mir neu, dass sich per exec(), system() usw. Programme auf dem Client ausführen lassen.Vielleicht kannst du ja mal kurz andeuten, wofür dein PHP-Programm eigentlich gedacht ist. Soll das so eine Art Server-Fernbedienung per Webinterface sein, ala Webmin oder Confixx?
-
Man, entschuldige. Momentan häng ich auch ziemlich. Klar hast du recht. PHP ist serverseitig und führt das Programm auf dem Server aus, ohne das der Client die Ausgabe sieht. OK, dass muss ich dann anders machen. Dann mach ich einfach eine interne Ausgabe, die ich dann auf dem Server auslese und dem Client dann auf der Site ausgebe.
Nein, es ist nicht so wie du denkst. Also ich hab den ganzen Kram auf dem Server. Die Clients haben eine Oberfläsche
auf der Sie lokale Verzeichnisse auswählen können. Diese werden dann als Quelle genutzt. Die ausgewählten Verzeichnisse werden dann bisher übercmd = "xcopy \\"\\\\\\reception\$path\" \"\\\192.168.240.2\\verzeichnis\".dir."\\\\\" /EVHRY"; copy = exec($cmd , $list, $return);
xcopy kopiert. Da mir das mit dem xcopy aber zu unsicher ist, wollte ich eine eigene exe schreiben.
So das ist der Stand der Dinge.
P.S. In $list steht ja die Ausgabe von xcopy ... was er kopiert hat. So werde ich dass dann auch mit meiner exe machen. Trotzdem bräuchte ich irgendwie eine Anzeige für den User.
Eine Idee?