Seite 1 von 1

RunShell() Rückgabewert [ERLEDIGT]

Verfasst: Mo, 20. Nov 2017 16:29
von Manfred
Ich habe hier zwar einiges gefunden zu Runshell() , aber wie ist das mit den Rückgabewerten?
0 = alles ok
-1 = es ist was faul
aber wofür steht "1" ?
den bekomme ich jetzt zurückgeliefert. Ist das so wie -1?

Re: RunShell() Rückgabewert

Verfasst: Mo, 20. Nov 2017 16:44
von brandelh
Ich meine die Funktion RunShell liefert den Fehlercode des aufgerufenen Programmes, eventuell aber nur bei synchroner Ausführung.
-1 bedeutet, dass das Programm nicht gestartet werden konnte !
0 immer wenn nichts ermittelt werden konnte, oder das Programm 0 (alles OK) gemeldet hat
steht sogar in der Hilfe: ;-)
Der Rückgabewert von RunShell() ist der Rückgabewert des gestarteten Befehlsprozessors bzw. des Programms.
Wenn ein Befehlsprozessor/Programm im asynchronen Modus gestartet wird, ist der Rückgabewert immer 0.
Konnte das Programm nicht gestartet werden dann wird -1 zurückgegeben.
Schau mal hierfür die Erklärung wie ein Xbase++ / Clipper Programm so einen Zustand setzt.
QUIT | CANCEL [<nErrorLevel>]

Parameter

<nErrorLevel>

Optional kann bei dem Befehl ein numerischer Wert als Parameter angegeben werden. Dieser wird an die Funktion ErrorLevel() übergeben.

Re: RunShell() Rückgabewert

Verfasst: Mo, 20. Nov 2017 16:57
von Manfred
Hi Hubert,
Danke für Deine Info, aber Du hast ja jetzt mehr oder weniger nur wiederholt, was ich geschrieben habe.
Eigentlich stehe ich vor dem Problem nicht zu wissen, was eine einfache 1 zu bedeuten hat. Das steht nicht in der Hilfe. Oder irre ich?

Re: RunShell() Rückgabewert

Verfasst: Mo, 20. Nov 2017 17:34
von UliTs
Hat Hubert doch schon geschrieben: das Programm hat die 1 als Rückgabewert bzw. Errorcode zurückgegeben.
Das kannst du auch mit einem eigenen Programm testen :-) .

Re: RunShell() Rückgabewert

Verfasst: Mo, 20. Nov 2017 17:39
von AUGE_OHR
Manfred hat geschrieben: Mo, 20. Nov 2017 16:57 Eigentlich stehe ich vor dem Problem nicht zu wissen, was eine einfache 1 zu bedeuten hat.
Das steht nicht in der Hilfe. Oder irre ich?
was Hubert wohl sagen wollte ist das man dazu einen ERRORLEVEL setzten muss der nach dem beendet des Programms noch besteht.

wenn du nun unter ERRORLEVEL guckst :
Standardmäßig ist der Return-Code einer Xbase++ Anwendung 0, wenn das Programm ordnungsgemäß beendet wurde.
Bei einem Laufzeitfehler wird der Return-Code von der Standard-Fehlerroutine auf 1 gesetzt, bevor das Programm mit QUIT beendet wird.

Re: RunShell() Rückgabewert

Verfasst: Mo, 20. Nov 2017 18:04
von Manfred
gebt zu, ihr wollt mich auf die Probe stellen....
Das weiß ich doch alles, aber was hat die 1 zu besagen? Es ist was nicht korrekt. Das klingt aber so wie:
Alles klar?
nein, es lief was falsch
was denn?
ja, es lief was falsch.
Und was lief falsch?
Es lief was falsch.
Die Zahl 1, ist sie wie ein False zu betrachten, oder wie die Zahl -1? Oder kann man irgendwo nachlesen, was es evtl. für ein Fehler war? Sind es die OS Meldungen? Ich habe so nichts gefunden.
Ob ich jetzt Errorlevel() abfrage, oder den Rückgabewert der RunShell() Funktion ist doch gleich. Es gibt in beiden Fällen die gleiche Zahl.

Re: RunShell() Rückgabewert

Verfasst: Mo, 20. Nov 2017 18:08
von HaPe
Hallo Manfred !
Das weiß ich doch alles, aber was hat die 1 zu besagen?
Verrate doch mal welches Programm du mittels RunShell aufrufst:
- Eigenes Xbase++-Programm
- Fremdes Xbase++-Programm
- Office
- Fremdes Programm das geheim bleiben muss
- CMD.EXE
- ...

Re: RunShell() Rückgabewert

Verfasst: Mo, 20. Nov 2017 18:13
von Manfred
ich rufe 7za.exe damit auf. Also ein Packprogramm. Das hat zum ersten Mal gemeckert. Zwischenzeitlich habe ich systematisch die Dateien, die gepackt werden sollen entfernt und dann häppchenweise zurückkopiert und immer wieder laufen lassen. Komischerweise gibt es jetzt keine Fehlermeldung mehr.
Mein Interesse liegt nur darin, ob ich die 1 einfach ignorieren kann/soll.

Re: RunShell() Rückgabewert

Verfasst: Mo, 20. Nov 2017 18:15
von AUGE_OHR
Manfred hat geschrieben: Mo, 20. Nov 2017 18:04 gebt zu, ihr wollt mich auf die Probe stellen....
Das weiß ich doch alles, aber was hat die 1 zu besagen? Es ist was nicht korrekt.
liest du was andere schreiben ?
Bei einem Laufzeitfehler wird der Return-Code von der Standard-Fehlerroutine auf 1 gesetzt, bevor das Programm mit QUIT beendet wird.

Re: RunShell() Rückgabewert

Verfasst: Mo, 20. Nov 2017 18:18
von HaPe
Hallo Manfred !
ich rufe 7za.exe damit auf.
Guggst du hier: http://7zip.bugaco.com/7zip/MANUAL/exit_codes.htm

Re: RunShell() Rückgabewert

Verfasst: Mo, 20. Nov 2017 18:20
von Manfred
Jimmy,
ich habe es genau gelesen und auch mehrfach erwähnt. Es gab einen Laufzeitfehler. Aber was hat das zu bedeuten? Wenn jemand umfällt, dann kann ihm übel geworden sein, oder er ist gestorben. beides könnte man unter Laufzeitfehler einordnen. Aber genaues weiß man nicht ohne genauere Prüfung. Wenn die 1 bedeuten soll, es hat nicht geklappt, was es aber war, erfährt man nicht. OK, dann ist das so. Aber sind das vernünftige Codes für ein OS? Können noch andere Zahlen auftauchen?

Re: RunShell() Rückgabewert

Verfasst: Mo, 20. Nov 2017 18:21
von Manfred
Ah, Hape
Danke. Es gibt also mehrere und es hängt speziell mit dem programm zusammen wie ich es jetzt erkenne. Das hatte ich anders interpretiert.

Re: RunShell() Rückgabewert [ERLEDIGT]

Verfasst: Mo, 20. Nov 2017 21:11
von Werner_Bayern
Servus Manfred,

warum verwendest Du nicht die XbZLib?

Re: RunShell() Rückgabewert [ERLEDIGT]

Verfasst: Di, 21. Nov 2017 8:06
von Manfred
Hallo Werner,
die kenne ich nur vom Namen her. Kann die so klein machen wie 7zip?

Re: RunShell() Rückgabewert [ERLEDIGT]

Verfasst: Di, 21. Nov 2017 8:19
von brandelh
7zip kann 7z Archive gut und ZIP leicht verschlüsseln, das kann XbZLib nicht.
Die ZIP Dateien werden aber gleich generiert, sonst wären sie ja nicht kompatibel, somit müsste auch die Größe der Datei etwa gleich sein.

Re: RunShell() Rückgabewert [ERLEDIGT]

Verfasst: Di, 21. Nov 2017 10:25
von Werner_Bayern
Manfred hat geschrieben: Di, 21. Nov 2017 8:06 Hallo Werner,
die kenne ich nur vom Namen her. Kann die so klein machen wie 7zip?
Sie hat folgende Kompressions-Einstellungen:
Define Value Description

XBZ_DEFAULT_COMPRESSION -1 Default compression (similar to 6).

XBZ_NO_COMPRESSION 0 No compression, cannot be specified!

XBZ_BEST_SPEED 1 Minimum compression, fastest speed.

XBZ_BEST_COMPRESSION 9 Maximum compression, slowest speed.

Also possible are all integer values between 1 and 9 (for which no define constants exist), which determine the relation between Speed and Compression Ratio and give a finer granulation than the above listed Define values. But in virtually all cases, the Default Compression is the best compromise between compression ratio and speed. Using higher compression ratios will result in only very slightly smaller files, and using a better speed (lower compression ratio) will give only very small improvements in the speed!
Folgende Methoden:
Init
Open
IsOpen
Save
Close
AddSFX
RemoveSFX
Test
Fix
AddDir
AddList
AddFile
AddData
AddEntry
ReplaceEntry
Delete
DeleteEntry
TestEntry
FixEntry
FindEntry
Extract
ExtractEntry
CopyFromZip
CopyToZip
ChangeFileName
ChangeFileDateTime
ChangeFileAttrib
ChangeFileComment
SetBaseDirectory
NormalizeFileName
GetData
Directory
StatusList
WildCardDir
SetDisplayObject
CloseDisplay
Display
Es ist sogar eine komplette Commandozeilen-Version mit dabei von Andreas Gehrs-Pahl.

Funktioniert einwandfrei, Du hast volle Kontrolle über das Ein- und Auspacken und sehr viele Möglichkeiten. Benötigt ot4xb.

Re: RunShell() Rückgabewert [ERLEDIGT]

Verfasst: Di, 21. Nov 2017 17:23
von AUGE_OHR
wenn man keine Verschlüsselung braucht kann man auch das "eingebaute" ZIP (Copyhere ***) nehmen.
dann auch den grünen Progressbar für den Fortschritt.

*** viewtopic.php?f=16&t=5306