AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Programm funktioniert nur unter XP

Ein Thema von Ati · begonnen am 2. Jan 2006 · letzter Beitrag vom 3. Jan 2006
Antwort Antwort
Seite 1 von 2  1 2      
Ati

Registriert seit: 16. Okt 2003
Ort: Gelsenkirchen
406 Beiträge
 
Delphi 3 Professional
 
#1

Programm funktioniert nur unter XP

  Alt 2. Jan 2006, 12:08
Hallo zusammen,

meine WE-Anforderung liegt in den allerletzten Zügen. In meiner Access-Version hatte ich beim speichern noch eine Batchdatei ausführen lassen, damit diverse WE-Anforderungen nicht "Rückdatiert" werden können. Ich habe dann hier und bei Swissdelphicenter eine hübschen Code gefunden, der die Batchdatei ausführt und wartet bis diese beendet ist. Es kann nur mit dem Ausführbefehl zu tun haben, das mein Programm unter XP einwandfrei funktioniert und W98-Kisten gar nichts mehr machen. hier mal der C&P-Code
Delphi-Quellcode:
procedure ShellExecute_AndWait(FileName: string; Params: string);
var
  exInfo: TShellExecuteInfo;
  Ph: DWORD;
begin
  FillChar(exInfo, SizeOf(exInfo), 0);
  with exInfo do
  begin
    cbSize := SizeOf(exInfo);
    fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
    Wnd := GetActiveWindow();
    ExInfo.lpVerb := 'open';
    ExInfo.lpParameters := PChar(Params);
    lpFile := PChar(FileName);
    nShow := SW_Hide;
  end;
  if ShellExecuteEx(@exInfo) then
    Ph := exInfo.HProcess
  else
  begin
    ShowMessage(SysErrorMessage(GetLastError));
    Exit;
  end;
  while WaitForSingleObject(ExInfo.hProcess, 50) <> WAIT_OBJECT_0 do
    Application.ProcessMessages;
  CloseHandle(Ph);
end;
Hier der Aufruf:
Delphi-Quellcode:
Procedure TForm1.dssave;
var datum:TDate;
    zeit:TTime;
Begin
  shellexecute_Andwait('W:\fohrer\nettime.bat','');
Hatte hier mal was von einem Schalter /C gelesen konnte ihn aber irgendwie nicht anwenden.

Danke Ati
Ich weiß das ich nichts weiß

Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Programm funktioniert nur unter XP

  Alt 2. Jan 2006, 12:29
Es könnte an dem fehlenden /c liegen.
Die /c-Option sagt dem Kommandointerpreter, das er das folgende Kommando ausführen und dann enden soll.
Du müsstest also etwa folgendes ausführen:
Code:
cmd /c c:\meinebat.bat
In deinem Fall solltest du dir aber vorher noch den Wert der Umgebungsvariable "ComSpec" holen, damit du unter Win98 die "command.com" anstatt der "cmd.exe" ausführst.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Ati

Registriert seit: 16. Okt 2003
Ort: Gelsenkirchen
406 Beiträge
 
Delphi 3 Professional
 
#3

Re: Programm funktioniert nur unter XP

  Alt 2. Jan 2006, 12:56
TOLL!!!!!!!!!!!!!!!!
Ich hab nicht ein Wort verstanden.
Ich weiß das ich nichts weiß

Sokrates
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#4

Re: Programm funktioniert nur unter XP

  Alt 2. Jan 2006, 13:04
Und was genau daran nicht?
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Ati

Registriert seit: 16. Okt 2003
Ort: Gelsenkirchen
406 Beiträge
 
Delphi 3 Professional
 
#5

Re: Programm funktioniert nur unter XP

  Alt 2. Jan 2006, 13:23
Also. "cmd" geht wie wir ja alle wissen nicht unter W98. Ich muß jetzt also das Kunststück hinbekommen einen "universellen" Code zu basteln. Das mit ComSpec habe ich in diesem Zusammenhang nicht verstanden. Ich könnte natürlich die Batch-Datei ganz normal ausführen, dann 2 Sekunden das programm anhalten und dann normal weitermachen. Nur finde ich so eine Lösung stümperhaft. Und davon habe ich in der Vergangenheit genug fabriziert.
Ich weiß das ich nichts weiß

Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Programm funktioniert nur unter XP

  Alt 2. Jan 2006, 13:34
Zitat von Ati:
Also. "cmd" geht wie wir ja alle wissen nicht unter W98. Ich muß jetzt also das Kunststück hinbekommen einen "universellen" Code zu basteln. Das mit ComSpec habe ich in diesem Zusammenhang nicht verstanden. Ich könnte natürlich die Batch-Datei ganz normal ausführen, dann 2 Sekunden das programm anhalten und dann normal weitermachen. Nur finde ich so eine Lösung stümperhaft. Und davon habe ich in der Vergangenheit genug fabriziert.
hol dir einfach die umgebungsvariable "ComSpec" auslesen (wie man umgebungsvariablen ausliest, findest du AFAIR in der CodeLib).
in dieser variable steht der kommandozeileninterpreter (eben command.com oder cmd.exe). diesen dann einfach mit besagten argumenten aufrufen und gut is'.

aeno
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
504 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Programm funktioniert nur unter XP

  Alt 2. Jan 2006, 13:35
Durch das Abfragen der ComSpec-Umgebungsvariable erhältst du den kompletten Pfad zum aktuellen Kommandointerpreter. Unter den NT-Systemen ist dies normalerweise die CMD.exe und unter den 9x-System die COMMAND.com.

Also sähe das Ergebnis unter NT-Systemen etwa so aus:
Code:
C:\WINDOWS\system32\cmd.exe
Und unter den 9x-Systemen vielleicht so:
Code:
C:\WINDOWS\command.com
  Mit Zitat antworten Zitat
Ati

Registriert seit: 16. Okt 2003
Ort: Gelsenkirchen
406 Beiträge
 
Delphi 3 Professional
 
#8

Re: Programm funktioniert nur unter XP

  Alt 2. Jan 2006, 14:00
Habe jetzt mal versucht folgenden Befehl zu testen:
Delphi-Quellcode:
   ShellExecute(Application.Handle, 'open', PChar(SysUtils.GetEnvironmentVariable('COMSPEC')),
PChar('/C W:\Fohrer\nettime.bat'), nil, SW_ShowNormal);
Meldung: undefinierter Bezeichner "GetEnvironmentVariable".

SysUtils und ShellApi sind in uses aber aufgenommen.
Ich weiß das ich nichts weiß

Sokrates
  Mit Zitat antworten Zitat
Ati

Registriert seit: 16. Okt 2003
Ort: Gelsenkirchen
406 Beiträge
 
Delphi 3 Professional
 
#9

Re: Programm funktioniert nur unter XP

  Alt 2. Jan 2006, 14:52
Hmh. Anscheinend weiß auch kein anderer warum das so nicht funktioniert. Habe ich den sonst noch irgendwie die Möglichkeit den Befehl "net time \\server /set /yes" auszuführen.
Ich weiß das ich nichts weiß

Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Programm funktioniert nur unter XP

  Alt 2. Jan 2006, 14:55
Geht bei mir wunderbar:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  s: String;
begin
  s := SysUtils.GetEnvironmentVariable('COMSPEC');
  ShowMessage(s);
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz