Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   abrir carpeta desde delphi no, con lazarus si (https://www.clubdelphi.com/foros/showthread.php?t=84471)

danielmj 22-10-2013 21:00:57

abrir carpeta desde delphi no, con lazarus si
 
hola, tengo una duda y un código, el código es este:

Código Delphi [-]
  if Join.CheckBox1.Checked then
    ShellExecute(Handle, 'open', nil, nil, PChar(extractFilePath(join.labEdit2.Text)), 1);

La duda es esta: ¿Por qué usando este código en lazarus me abre la carpeta indicada en el campo labEdit2.text y si la uso en delphi 2010 me devuelve este error? Decir que en el uses, tengo declarado "ShellApi".

Cita:

[dcc64 Error] Unir.pas(181): E2003 Undeclared identifier: 'Handle'
La verdad es que cuando he visto que lazarus se lo traga y delphi no, me ha dejado descolocado. Seguramente tiene su razon de ser, pero se me escapa.
¿Alguna sugerencia?

Gracias y un saludo.

danielmj 22-10-2013 21:19:58

Hola de nuevo,

vale he declarado el manejador en el var de la funcion como THandle y ya funciona.
una pregunta ¿por que si pongo...
Código Delphi [-]
if Join.CheckBox1.Checked then
    ShellExecute(Handle, 'open', nil, nil, PChar(extractFilePath(join.labEdit2.Text)), 1);
... sin declarar el manejador da error y si pongo "1" en lugar del "handle" no falla?

Saludos.

jhonny 22-10-2013 21:57:25

Cita:

Empezado por danielmj (Mensaje 468804)
Hola de nuevo,

vale he declarado el manejador en el var de la funcion como THandle y ya funciona.
una pregunta ¿por que si pongo...
Código Delphi [-]
if Join.CheckBox1.Checked then
    ShellExecute(Handle, 'open', nil, nil, PChar(extractFilePath(join.labEdit2.Text)), 1);
... sin declarar el manejador da error y si pongo "1" en lugar del "handle" no falla?

Saludos.

Normalmente uno envía el Handle del objeto TApplication, así...

Código Delphi [-]
ShellExecute(Application.Handle, 'open', nil, nil, PChar(extractFilePath(join.labEdit2.Text)), 1);

Con el 1 te funciona porque el compilador "cree" que le estas indicando como manejador el Handle con dirección 1.

danielmj 22-10-2013 22:26:18

Cita:

Empezado por jhonny (Mensaje 468806)
Normalmente uno envía el Handle del objeto TApplication, así...

Código Delphi [-]ShellExecute(Application.Handle, 'open', nil, nil, PChar(extractFilePath(join.labEdit2.Text)), 1);


Con el 1 te funciona porque el compilador "cree" que le estas indicando como manejador el Handle con dirección 1.

¿Qué seria la dirección 1? o dicho de otro modo ¿a que hace referencia el "1"? perdon por preguntar tanto.

Saludos.

jhonny 22-10-2013 22:37:22

Cita:

Empezado por danielmj (Mensaje 468809)
¿Qué seria la dirección 1? o dicho de otro modo ¿a que hace referencia el "1"? perdon por preguntar tanto.

Saludos.

Por acá encontré un Hilo donde Roman explica lo que preguntas... http://www.clubdelphi.com/foros/showthread.php?t=11567 espero te sirva ;).

danielmj 22-10-2013 23:35:05

Gracias jhonny,

Pues a estudiar un poco la API de windows entonces, saludos.


La franja horaria es GMT +2. Ahora son las 19:01:38.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi