Hallo zusammen,
ich habe keinen Systemwechsel durchgeführt und plötzlich zwei Probleme, obwohl ich nichts geändert habe:
- weder am System
- noch am Code der Applikation
- noch am Winzip oder am Mediaplayer.
Problem 1:
Ich erhalte eine External Exception beim Aufruf von winzip.
Code:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
| Optionsstring := '-min -a ' +CHR(34) +Pfad +DataModul.Macht.FieldValues['DATENPFAD'] +'_DB_' +inttostr(Datamodul.Stamm.FieldValues['MONATE']) +'_' +inttostr(Datamodul.Stamm.FieldValues['JAHRE']) +CHR(34) +' ' +CHR(34) +Pfad +'Datenbank\'+Hauptserver+'\ComStar\*.*' +CHR(34); try Success := False; if WarteBox.Checked then begin Zippen.Enabled := False; Success := ExecAppWait('winzip',Optionsstring); end else begin InstanceID := ShellExecute(Handle, 'open', PChar('winzip'), PChar(Optionsstring), nil, SW_SHOW); Success := InstanceID >= 32; end; finally Zippen.Enabled := True; end; if not Success then ShowMessage('Application failed: ' + 'winzip' + ' ' + Optionsstring); |
Die zugehörige Funktion. Der Fehler wird bei Result:=ShellExecuteEx(@ShellExInfo) geworfen und ist auch nicht mit try...except abzufangen (ausserdem will ich ja zippen)

:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| function ExecAppWait(AppName, Params: string): Boolean; var ShellExInfo: TShellExecuteInfo; begin FillChar(ShellExInfo, SizeOf(ShellExInfo), 0); with ShellExInfo do begin cbSize := SizeOf(ShellExInfo); fMask := see_Mask_NoCloseProcess; Wnd := Application.Handle; lpFile := PChar(AppName); lpParameters := PChar(Params); nShow := sw_ShowNormal; end; Result := ShellExecuteEx(@ShellExInfo); if Result then while WaitForSingleObject(ShellExInfo.HProcess, 100) = WAIT_TIMEOUT do begin Application.ProcessMessages; if Application.Terminated then Break; end; end; |
Problem 2:
Das schildere ich nur deswegen, weil es evtl. zusammenhängt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| with Player do begin FileName :=pfad+'Sounds\Explosion'+a+'.wav'; Open; wait:=true; Play; Close; end; |
...führt ebenfalls plötzlich zu dem Fehler, dass mir die EXE sagt: Windows hat keinen Player installiert, der WAV-Files abspielen kann (natürlich hat er, natürlich kann er).
Ich habe zwar einige Hinweise gegoogelt und auch in diesem Forum wieder ein paar Dinge gesehen, aber so richtig komme ich mit meinem Problem nicht weiter.
HILFE!
Viele Grüße
David
Lieber gut machen statt besser wissen.