AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Too stupid to execute and wait

Ein Thema von QuickAndDirty · begonnen am 9. Aug 2011 · letzter Beitrag vom 10. Aug 2011
Antwort Antwort
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

AW: Too stupid to execute and wait

  Alt 9. Aug 2011, 09:24
Der Code ist ja grausam. Willst du uns irgendwie quälen? Der Ressourcenschutzblock sitzt an der falschen Stelle, bei der Fehlerbehandlung hast du mehrfach doppelten Code und mit einem case wäre das ganze wesentlich übersichtlicher.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.064 Beiträge
 
Delphi 12 Athens
 
#2

AW: Too stupid to execute and wait

  Alt 9. Aug 2011, 09:47
Ich habe die ExecuteAndWait einfach übernommen und dann so lange vergewaltigt bis sie mir sagt warums sie nicht funktioniert....das ist nicht als bleibender Code gedacht....

try finaly kann nicht wo anders hin so weit ich das sehe.

könntest du dennoch was zum thema sagen?
Andreas
Nobody goes there anymore. It's too crowded!

Geändert von QuickAndDirty ( 9. Aug 2011 um 10:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Too stupid to execute and wait

  Alt 9. Aug 2011, 09:52
Hallo QAD,

ich denke mal du nutzt Delphi > 2007. Wenn das der Fall ist dann solltest du darauf achten, dass du WideString und AnsiString nicht vermischst

Gruß, Chris

[Edit]siehe ShExecInfoA.lpVerb := 'open'; [/Edit]
[Edit2]
und das ist auch komisch:
Delphi-Quellcode:
ShExecInfoA.lpFile := PChar(AnsiString(Filename));
ShExecInfoA.lpParameters := PChar(AnsiString(Params));
ShExecInfoA.lpDirectory := PChar(AnsiString(ExtractFileDir(Filename)));
Ein WideString z.b FileName wird zu nem AnsiString gecastet und dann wird doch wieder nen PChar draus gemacht und einer Struktur übergeben die Ansi als Index trägt
[/Edit2]
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules

Geändert von ChrisE ( 9. Aug 2011 um 10:02 Uhr) Grund: siehe Edit
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.752 Beiträge
 
Delphi 12 Athens
 
#4

AW: Too stupid to execute and wait

  Alt 9. Aug 2011, 10:13
Zitat:
Delphi-Quellcode:
else if GetLastError = ERROR_FILE_NOT_FOUND then
      Showmessage('Fehler beim Starten der Anwendung:' + Filename +
                   #13#10'System Fehler: ERROR_FILE_NOT_FOUND')
    else if GetLastError = ERROR_PATH_NOT_FOUND then
      Showmessage('Fehler beim Starten der Anwendung:' + Filename +
               #13#10'System Fehler: ERROR_PATH_NOT_FOUND')
    else if GetLastError = ERROR_DDE_FAIL then
...
Kennst du schon Delphi-Referenz durchsuchenSysErrorMessage oder Delphi-Referenz durchsuchenRaiseLastOSError?

PS: Bei einem dir unbekannten Fehler oder bei neuen Fehler in neueren Windowsen, wird bei dir niemals ein Fehler angezeigt.


Abgesehn davon ist es bei solchen "Funktionen" nicht schöön, wenn Fehler mit ShowMessage und Co. angezeigt werden,
denn was wäre, wenn ich in meinem Programm solche Fehler über abfangen möchte, ohne daß etwas angezeigt wird? (z.B. ein externes Try-Except, was bei ShowMessage aber nicht geht)


Zitat:
WaitForSingleObject
Schau dir mal Delay in der DP-CodeLib an, damit kann man in der aktiven Methode warten und die restliche GUI läuft dennoch weiter.
Oder man lagert das aktuelle ExecAndWait in einen Thread aus, da bleibt dann nur der Thread "hängen" und der GUI-Thread kann problemlos weiterarbeiten.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 9. Aug 2011 um 10:16 Uhr)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.064 Beiträge
 
Delphi 12 Athens
 
#5

AW: Too stupid to execute and wait

  Alt 9. Aug 2011, 10:15
Zitat:
Delphi-Quellcode:
else if GetLastError = ERROR_FILE_NOT_FOUND then
      Showmessage('Fehler beim Starten der Anwendung:' + Filename +
                   #13#10'System Fehler: ERROR_FILE_NOT_FOUND')
    else if GetLastError = ERROR_PATH_NOT_FOUND then
      Showmessage('Fehler beim Starten der Anwendung:' + Filename +
               #13#10'System Fehler: ERROR_PATH_NOT_FOUND')
    else if GetLastError = ERROR_DDE_FAIL then
...
Kennst du schon Delphi-Referenz durchsuchenSysErrorMessage oder Delphi-Referenz durchsuchenRaiseLastOSError?

PS: Bei einem dir unbekannten Fehler oder bei neuen Fehler in neueren Windowsen, wird bei dir niemals ein Fehler angezeigt.


Abgesehn davon ist es bei solchen "Funktionen" nicht schöön, wenn Fehler mit ShowMessage und Co. angezeigt werden,
denn was wäre, wenn ich in meinem Programm solche Fehler über abfangen möchte, ohne daß etwas angezeigt wird? (z.B. ein externes Try-Except, was bei ShowMessage aber nicht geht)
Himitsu die Showmessages sind nur zum debuggen ^^

du hast also auch keine Idee warum es nicht geht ja?
Andreas
Nobody goes there anymore. It's too crowded!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.752 Beiträge
 
Delphi 12 Athens
 
#6

AW: Too stupid to execute and wait

  Alt 9. Aug 2011, 10:18
Auch mit SysErrorMessage und Co. kann man debuggen.

Und siehe mein Edit im letzen Post.

wie schon jemand sagte:
- bei ShExecInfoA, SHELLEXECUTEINFOA und ShellExecuteExA das A weg
- WideString zu String
- die AnsiString-Casts raus

Wer sagt, daß das ForegroundWindow zu deinem Prozess gehört? ... Keiner, also kannst du da doch nicht einfach was dranhängen.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 9. Aug 2011 um 10:22 Uhr)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.064 Beiträge
 
Delphi 12 Athens
 
#7

AW: Too stupid to execute and wait

  Alt 9. Aug 2011, 10:24
Auch mit SysErrorMessage und Co. kann man debuggen.

Und siehe mein Edit im letzen Post.

wie schon jemand sagte:
- bei ShExecInfoA, SHELLEXECUTEINFOA und ShellExecuteExA das A weg
- WideString zu String
- die AnsiString-Casts raus

Wer sagt, daß das ForegroundWindow zu deinem Prozess gehört? ... Keiner, also kannst du da doch nicht einfach was dranhängen.
Ok. wie gesagt habe es kopiert weil ich mal schnell was brauchte... und mit Kommandline programmen ging es auch.

Ich bin in sachen Windows API relativ unbeleckt! Und hoffte eigentlich was fertiges zu finden was einfach einen Prozess startet und wartet bis er fertig ist! Der code hat mit Kommandlinetools auch super hingehauen.
(gsecexe, Isql.exe)
Andreas
Nobody goes there anymore. It's too crowded!

Geändert von QuickAndDirty ( 9. Aug 2011 um 10:26 Uhr)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.064 Beiträge
 
Delphi 12 Athens
 
#8

AW: Too stupid to execute and wait

  Alt 9. Aug 2011, 10:22
Hallo QAD,

ich denke mal du nutzt Delphi > 2007.
ja 2007.

Wenn das der Fall ist dann solltest du darauf achten, dass du WideString und AnsiString nicht vermischst

Gruß, Chris
Ok, danke. Habe das korrigiert...
Scheint das problem aber nicht zu beheben kann das sein?

[Edit]siehe ShExecInfoA.lpVerb := 'open'; [/Edit]
was ist damit?
Andreas
Nobody goes there anymore. It's too crowded!
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.064 Beiträge
 
Delphi 12 Athens
 
#9

AW: Too stupid to execute and wait

  Alt 9. Aug 2011, 10:13
@Luckie:
Als Goody extra für dich Case of reingebaut...

Ist tatsächlich augenfreundlicher...funktioniert aber auch nicht besser.
Andreas
Nobody goes there anymore. It's too crowded!
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz