Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Shellapi beendet Programm (https://www.delphipraxis.net/126388-shellapi-beendet-programm.html)

Larsi 23. Dez 2008 11:59


Shellapi beendet Programm
 
Hi,
ich habe in meinem Programm eine Funktion der Shellapi verwendet. Mit Shellexecute öffne ich einen Ordner im Windows Explorer. Das hat bis gestern auch noch super geklappt aber wenn ich jetzt die Funktion, die den Ordner aufrufen soll aufrufe, dann beendet sich mein Programm ohne irgendeine Fehlermeldung. Neues Projekt erstellen kommt nicht in Frage. Wisst Ihr weiter? Hier die Funktion (ist hier aus der Dp):

Delphi-Quellcode:
procedure ShowFolder(Folder: string);
begin
  ShellExecute(Application.Handle, PChar('open'), PChar(Folder), nil, nil, SW_SHOWNORMAL);
end;
Mit freundlichen Grüßen

Lars Wiltfang

toms 23. Dez 2008 12:06

Re: Shellapi beendet Programm
 
Zitat:

Neues Projekt erstellen kommt nicht in Frage.
Wie verhält es sich denn in einem ganz neuen Projekt?

Larsi 23. Dez 2008 12:13

Re: Shellapi beendet Programm
 
Im neuen Projekt geht alles super. Wenn ich das "alte" Projekt kompilliere kommt folgende Fehlermeldung:
---------------------------
Benachrichtigung über Debugger-Problem
---------------------------
In Projekt C:\Dokumente und Einstellungen\Lars\Desktop\USB Sidebar Ver. 0.1 Alpha\Project3.exe trat ein Problem mit folgender Meldung auf: 'access violation at 0x7c9287f4: write of address 0x00040ffc'. Prozess angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK
---------------------------

hoika 23. Dez 2008 12:15

Re: Shellapi beendet Programm
 
Hallo,

teste mal mit FastMM4 auf Speicherüberscheibung.

Tja, es fehlt was.

dunit: Tests
Subversion: VCS


Heiko

DeddyH 23. Dez 2008 12:49

Re: Shellapi beendet Programm
 
Und so?
Delphi-Quellcode:
procedure ShowFolder(Folder: string);
var dwErr: DWORD;
begin
  dwErr := ShellExecute(Handle, 'explore', PChar(Folder), nil, nil, SW_SHOWNORMAL);
  if dwErr < 33 then
    MessageBox(Handle,PChar(SysErrorMessage(dwErr)),nil,MB_OK or MB_ICONERROR);
end;

Apollonius 23. Dez 2008 12:51

Re: Shellapi beendet Programm
 
Den Rückgabewert von ShellExecute kannst du nicht einfach mit SysErrorMessage zu einer aussagekräftigen Fehlermeldung umformen. SysErrorMessage ist für GetLastError gedacht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:33 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