Startseite ¦  was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews ¦  sonstiges
kylix ¦  tutorials ¦  online shop ¦  fotos ¦  Add&Win Gewinnspiel


Willkommen Gast. Bitte einloggen oder registrieren.
21.05.2012, 11:47:43
Übersicht Hilfe Suche Einloggen Registrieren

+  SwissDelphiCenter Forum
|-+  German Forums
| |-+  WinAPI Forum
| | |-+  GetOpenFileNameA
« vorheriges nächstes »
Seiten: [1] Drucken
Autor Thema: GetOpenFileNameA  (Gelesen 4399 mal)
Thomas Stutz
Global Moderator
Hero Member
*****
Offline Offline

Beiträge: 1784



WWW
« am: 05.03.2002, 16:06:06 »

Hi,

Hat jemand eine Idee, warum folgender Code unter NT4.0 nicht
funktioniert ?
Unter Win2000, Win9x funktioniert er.
Es liegt glaub an der Grösse der TOpenFileName Struktur.


[font  size=2 face="Courier New" color="#000000"]uses
  
ShellAPI, ActiveX, CommDlg;

function ChooseFile(out FileName: string): Boolean;
var
  
OFN: TOpenFileName;
  Path, s: string;
begin
  
Result := False;

  Path := 'Default.txt'#0;
  SetLength(Path, MAX_PATH + 5);

  FillChar(OFN, SizeOf(OFN), 0);
  with OFN do
  begin
    
lStructSize := SizeOf(TOpenFilename);
    [font color="#000080"]// lStructSize := OPENFILENAME_SIZE_VERSION_400;  ??
    
[/font]hInstance    := SysInit.HInstance;
    lpstrTitle   := PChar('Mein Öffnen Dialog');
    hWndOwner    := Form1.Handle;
    lpstrFilter  := PChar('Textdateien (*.txt)' + #00 + '*.txt' +
      #00 + 'Alle Dateien (*.*)' + #00 + '*.*' + #00#00);
    nFilterIndex := 1;
    lpstrFile    := PChar(Path);
    nMaxFile     := MAX_PATH + 5;
    Flags        := OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST or OFN_HIDEREADONLY;
  end;
  if GetOpenFileNameA(OFN) then
  begin
    
FileName := PChar(OFN.lpstrFile);
    Result   := True;
  end 
  else
    
FileName := '';
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  
AFilename: string;
begin
  if 
ChooseFile(AFilename) then
    
ShowMessage(AFilename);
end;
[/font]
Gespeichert

(¯`·._tom_.·´¯)

Tipp: Viele Antworten auf Fragen gibt's hier:
http://www.swissdelphicenter.ch/de/tipsuchen.php
Lemy
Hero Member
*****
Offline Offline

Beiträge: 605



« Antworten #1 am: 05.03.2002, 16:29:07 »

Was kriegst Du denn mit CommDlgExtendedError zurück ?

If the user cancels or closes the Open dialog box or an error occurs, the return value is zero. To get extended error information, call the CommDlgExtendedError function, which can return one of the following values:

CDERR_DIALOGFAILURE
CDERR_FINDRESFAILURE
CDERR_NOHINSTANCE
CDERR_INITIALIZATION
CDERR_NOHOOK
CDERR_LOCKRESFAILURE
CDERR_NOTEMPLATE
CDERR_LOADRESFAILURE
CDERR_STRUCTSIZE
CDERR_LOADSTRFAILURE
FNERR_BUFFERTOOSMALL
CDERR_MEMALLOCFAILURE
FNERR_INVALIDFILENAME
CDERR_MEMLOCKFAILURE
FNERR_SUBCLASSFAILURE
Gespeichert
Peda
Newbie
*
Offline Offline

Beiträge: 38


58549660
WWW
« Antworten #2 am: 05.03.2002, 16:39:08 »

vielleicht hilft dieser VB-Code weiter. Da ist dasselbe Problem auf VB-Basis beschrieben und das es mit Leerstrings und Pointer auf selbige zusammenhängen soll (wenn ich das richtig gedeutet hab...)

[a href="http://groups.google.com/groups?hl=de&ie=utf-8&oe=utf-8&threadm=8cigcp%2469m%241%40nnrp1.deja.com&rnum=8&prev=/groups%3Fq%3DGetOpenFileNameA%2Bnt%26btnG%3DGoogle-Suche%26hl%3Dde%26ie%3Dutf-8%26oe%3Dutf-8" target="_blank"]http://groups.google.com/groups?hl=de&ie=u...-8%26oe%3Dutf-8[/a]
Gespeichert

So long...
Thomas Stutz
Global Moderator
Hero Member
*****
Offline Offline

Beiträge: 1784



WWW
« Antworten #3 am: 05.03.2002, 16:46:36 »

Error Message: "A Call to an OS function failed"
Gespeichert

(¯`·._tom_.·´¯)

Tipp: Viele Antworten auf Fragen gibt's hier:
http://www.swissdelphicenter.ch/de/tipsuchen.php
Lemy
Hero Member
*****
Offline Offline

Beiträge: 605



« Antworten #4 am: 05.03.2002, 16:57:30 »

Also bei mir gehst auf 98 und NT4. Die Fehlermeldung deuted eher darauf hin, dass die DLL nicht richtig ist.

Requirements
  Windows NT/2000: Requires Windows NT 3.1 or later.
  Windows 95/98: Requires Windows 95 or later.
  Header: Declared in Commdlg.h; include Windows.h.
  Library: Use Comdlg32.lib.
  Unicode: Implemented as Unicode and ANSI versions on Windows NT/2000.
Gespeichert
Lemy
Hero Member
*****
Offline Offline

Beiträge: 605



« Antworten #5 am: 05.03.2002, 17:01:37 »

Als ich hab ComDlg32.dll Versionen:

4.72.3510.2300 auf W98
4.0 auf NT4.0
Gespeichert
Lemy
Hero Member
*****
Offline Offline

Beiträge: 605



« Antworten #6 am: 05.03.2002, 17:18:33 »

Schei..e krieg den Code nicht rein.
Gespeichert
Seiten: [1] Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC Prüfe XHTML 1.0 Prüfe CSS