![]() |
Windows 98 und Shellexecute
Hallo,
ich rufe per shellexecute ein weiteres Programm auf. Klappt bei mir (XP) und auf einem frisch installierten 98 SE in der VM wunderbar. Bei einem Kollegen (W98 SE) klappt das nicht. Hat jemand eine Idee? Hier mein Aufruf: shellexecute(1,'OPEN',pchar('updatemanager.exe'),N IL,NIL,SW_NORMAL); Gruss EL |
Re: Windows 98 und Shellexecute
Nimm 0 oder
![]() |
Re: Windows 98 und Shellexecute
Hi,
habs eingebaut. Hoffe es klappt. Danke Gruss EL |
Re: Windows 98 und Shellexecute
oder gib doch einfach mal den gesamten pfad zum programm, oder wenn es sich im gleichen ordner befindet
Delphi-Quellcode:
an.
extractfilepath(application.exename)+'PROGRAMMNAME')
|
Re: Windows 98 und Shellexecute
sowas mach ich ja. Aber wusstet Ihr, das Windows9x beim Dateinamen (lang) Gross/Klein unterscheidet? Daran lag es.
Böse Falle! Gruss EL |
Re: Windows 98 und Shellexecute
Zitat:
Irgendwann können wir Windows und Linux nicht mehr unterscheiden. Linux wird immer bunter und Windows übernimmt erst längere Dateinamen als 8.3 und dann sowas |
Re: Windows 98 und Shellexecute
Zitat:
Zitat:
Windows 98 basiert noch immer auf DOS und DOS unterscheidet nicht zwischen Groß- und Kleinschreibung, |
Re: Windows 98 und Shellexecute
Nein - ich konnte es definitiv nachvollziehen.
If hab da so eine Routine (in einer Updateprozedur): if existsfile('testname.old') then deletefile('testname,old'); if existsfile('testname.exe') then renamefile('testname.exe','testname.old'); if existsfile('testname.new') then renamefile('testname.new',testname.exe'); der Name von von testfile.xxx war: TestName.xxx nachdem ich die Prozedur so abgeändert habe: if existsfile('TestName.old') then deletefile('TestName,old'); if existsfile('TestName.exe') then renamefile('TestName.exe','TestName.old'); if existsfile('TestName.new') then renamefile('TestName.new',TestName.exe'); gings..... => Nun auf zur Diskussion Gruss EL |
Re: Windows 98 und Shellexecute
Äh:
Delphi-Quellcode:
Dir ist klar, dass er die Datei nur dann findet, wenn das momentane Verzeichnis, das Verzeichnis der Datei ist? Ein mal mit einem OpenDialog eine Datei irgendwo anders ausgewählt und das aktuelle Verzeichnis ist nicht mehr das Verzeichnis aus dem das Programm gestartet wurde und in dem sich vermutlich obige Datei befindet.
if existsfile('testname.old') then deletefile('testname,old');
Probier das ganze noch mal, aber mit kompltter Pfadangabe. Ich kann es leider nicht mehr testen, da ich kein Windows 98 System zur mehr Verfügung habe. |
Re: Windows 98 und Shellexecute
jaja der Pfad war komplett mit dabei.
Anwort ans Callcenter: Ja mein Bildsdchirm ist eingeschaltet. Ja der kleine Knopf da unten rechts... Gruss EL |
Re: Windows 98 und Shellexecute
Zitat:
Zitat:
|
Re: Windows 98 und Shellexecute
He,
sorry .. :roll: ich hatte ja bereits geschrieben, das das Problem erfolgreich gelöst ist. Das ist ja nur eine Nachdiskussion. Wenn Du Dich durch meine "forsche" Antwort auf den Schlips getreten fühlst, dann entschuldige ich mich dafür. :duck: Ich übrigens bisher auch noch nix mit Windows 98 zu tuen gehabt. Ich habs hier zum Testen in einer VMWare Box laufen. Gruss EL |
Re: Windows 98 und Shellexecute
@emsländer:
was ist "existsfile" für eine Funktion ? Eine von Euch geschriebene, die Groß/Kleinschreibung unterscheidet ? Es ist jedenfalls keine VCL oder API-Routine. Ich finde es übrigens auch ziemlich daneben, jemanden schwach anzuquatschen, der sich Zeit für Dich genommen hat und weiß Gott nicht ahnen kann, wo Du was falsch programmierst, wenn Du nur Phantasie-Fragmente postest. Roderich |
Re: Windows 98 und Shellexecute
Hi!
Ich tippe mal, dass FileExists gemeint ist, oder? Ciao Frederic |
Re: Windows 98 und Shellexecute
jupp - sorry - vertippt.
Gruss EL |
Re: Windows 98 und Shellexecute
Hallo Roderich,
ich habe mich dafür entschuldigt. Jeder hat mal nen schlechten Tag. Ok - hab meine Prügel bekommen und nehme sie hin. Es war übrigens fileexists gemeint. Hab mich da vertippelt. Gruss EL |
Re: Windows 98 und Shellexecute
Zitat:
Und DOS und Windows waren schon immer und sind noch immer case-insensitiv, was Datei- und Verzeichnisnamen angeht. |
Re: Windows 98 und Shellexecute
Entschuldigung ist angenommen. Ändert aber nichts an der Tatsache, dass der Fehle rbei dir liegt. Wie tommie-lie eben betsätigt hat, ist Windows, auch NT ff., nicht casesensitiv.
|
Re: Windows 98 und Shellexecute
Hi zusammen,
Hier der originalcode: deletefile(sappdir+'\FDFinanzdeskManager.old'); renamefile(sappdir+'\FDFinanzdeskManager.exe',sapp dir+'\FDFinanzdeskManager.old'); renamefile(sappdir+'\fdm_user_update.exe', sappdir+'\FDFinanzdeskManager.exe'); Als ich die Dateinamen im Code klein geschrieben hatte, hat es nicht funktioniert. Gruss EL |
Re: Windows 98 und Shellexecute
Zitat:
Danke! das NT/2000/XP nicht case sensitiv ist, ist mir klar. Der Fehler trat nur bei Windows98 auf (Welches ich allerdings in einer VMWare-Box laufen habe). Nachdem ich den Quelltext dem Case der Dateinamen angepasst hatte, ging alles. Gruss EL |
Re: Windows 98 und Shellexecute
Was ist sappdir?
|
Re: Windows 98 und Shellexecute
Zitat:
.. . . . . sAppDir := ExtractFileDir(Application.ExeName); // Updatemanager steht im Applicationfolder Gruss EL |
Re: Windows 98 und Shellexecute
heißt das nich ExtractFilePath?
|
Re: Windows 98 und Shellexecute
@emsländer: verwende doch bitte die [delphi]-Tags, um deinen Code formatiert darzustellen. Dank.
|
Re: Windows 98 und Shellexecute
Zitat:
Zitat:
|
Re: Windows 98 und Shellexecute
Angeber!
|
Re: Windows 98 und Shellexecute
Zitat:
Also hör auf, so einen Stuss zu behaupten! |
Re: Windows 98 und Shellexecute
Zitat:
Zitat:
|
Re: Windows 98 und Shellexecute
:warn:
|
Re: Windows 98 und Shellexecute
Zitat:
Klang zwar nicht nach Spaß, aber gut. Zitat:
Und nun Back to topic :!: |
Re: Windows 98 und Shellexecute
Das lässt sich doch ganz leicht klären:
Delphi-Quellcode:
ExtractFileDir ist für die Anzeige (z. B. auf Labels) gedacht, ExtractFilePath für tas weiterarbeiten.
ShowMessage(ExtractFileDir ('C:\Daten\Test.dat')); // C:\Daten
ShowMessage(ExtractFilePath('C:\Daten\Test.dat')); // C:\Daten\ ShowMessage(ExtractFileDir ('C:\Test.dat')); // C:\ ShowMessage(ExtractFilePath('C:\Test.dat')); // C:\ Das kommt saher, dass Windows 95 Probleme mit Pfadangaben wie C:\\text.ini hatte und man deshalb nicht mit der Anzeigefunktion arbeiten konnte. Also brauchte man eine Funktion, die einfach das \ noch da lässt, und man fügt beim Dateinamen kein \ mehr hinzu, wenn man ihn mit dem Verzeichnis verknüpft. Windows 98 kommt schon mit \\ klar, da könnte das dann wegfallen (ist aber unschön und ein Vergleich wird komplizierter, weil eines \\ und das andere \ enthalten könnte und trotzdem dir gleiche Datei gemeint ist). Übrigens ist so eine Funktion ziemlich einfach selbst zu schreiben, beispielsweise, wenn man ein Archivformat erfindet und dann das Trennzeichen / verwendet:
Delphi-Quellcode:
function ExtractArchiveFilePath(const Archiv: String): String;
begin Result := Copy(Archiv, 1, LastDelimiter('/', Archiv)); //Kopiert alle Zeichtn bis zum letzten / end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:26 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