Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ejecutar instruccion contenida en variable (https://www.clubdelphi.com/foros/showthread.php?t=88760)

edy_aca 28-07-2015 06:43:39

ejecutar instruccion contenida en variable
 
hola hace mucho tiempo use visual foxpro, y desde ya hace mucho que uso delphi. mi pregunta es la siguiente


en vfp se podia hacer esto:


se le asignaba a una variable una instruccion

ejemplo:
a="create table "

y luego la ejecutas

&a

..


existe algo similar en DELPHI O una alternativa

muchas gracias

ecfisa 28-07-2015 07:48:15

Hola edy_aca.

No conozco FoxPro, pero según el ejemplo de esta página: using Run command with variable, el código es:
Código:

abcd = "run /n explorer c:\program files\"
&abcd

Y creo que el equivalente mas aproximado en Delphi sería:
Código Delphi [-]
...
uses ShellApi;
...
var
  abcd: string;
begin
  abcd := 'c:\windows\explorer c:\program files\';
  WinExec(PChar(abcd), SW_SHOWNORMAL);
end;

Pero WinExec se mantiene en vigencia sólo por compatibilidad con las aplicaciones de 16 bits, por lo que es aconsejable usar ShellExecute en su lugar:
Código Delphi [-]
...
uses ShellApi;

...
var
  prog, param: string;
begin
  prog  := 'c:\windows\explorer.exe';
  param := 'c:\program files\';
  ShellExecute(0, 'open', PChar(prog), PChar(param), '', SW_SHOWNORMAL);
end;
Ahora, tratándose de la creación de una tabla como mencionas en tu mensaje, la sintáxis depende de la base de datos y de los componentes que uses para conectarte trabajando con Delphi.

Saludos :)

AgustinOrtu 28-07-2015 09:59:42

Pero que tipo de comandos querés ejecutar? Los que mandas por consola de windows (cmd.exe, inicio ejecutar)

O sentencias sql?

edy_aca 28-07-2015 18:39:12

que detalle muchas gracias por responder
 
que amables son. muchas gracias. si mi intención es ejecutar todo tipo de comando por ejemplo:


en foxpro seria asi:


abcd='Edit1.visible=false;'
&abcd;



en delphi

no se como seria.....

AgustinOrtu 28-07-2015 18:51:21

Depende de lo que quieras hacer, no hay forma de ejecutar como fox pro

Para cambiar la visibilidad de un edit basta con escribir

Código Delphi [-]
edit1.Visible := False

Ese código va en algún evento que tengas definido, no hay que guardarlo en una variable y ejecutarlo

Para ejecutar sql hay que usar componentes (clases, objetos), y para el caso comandos windows usar la API de windows, como ya te mostró ecfisa

Viendo que lo preguntas es muy básico te diría que te leas el libro La Cara Oculta de Delphi que esta en el FTP del club,

Saludos

Ñuño Martínez 11-08-2015 10:28:07

Yo creo que deberías echarle un vistazo a Pascal Script.

Lepe 11-08-2015 19:35:27

Si lo que quieres es modificar la visibilidad de un componente, o cambiar el color de fondo de una ventana, "mediante scripts que tú puedas escribir en casa del cliente, sin tener que recompilar" entonces puedes usar RTTI (busca en google que hay mucho).

Hilo donde ecfisa pone un ejemplo: http://clubdelphi.com/foros/showthre...ht=SetProperty

Otra forma es incluir un lenguaje de scripts dentro de tu programa. Ultimamente está de moda hacer la base de un programa en C++ o en Delphi y el resto de la aplicación con scripts. Así puedes hacer cosas directamente para un cliente sin tener que recompilar tu programa. Si es esto lo que quieres, aconsejo python, ya que está muy extendido y tiene clases para todo lo que imagines:
- crear ventanas nuevas de tu programa (con WxWidgets o con Qt)
- bajar ficheros por http, ftp, etc,
- enviar correos electrónicos
- acceder a Bases de Datos: DML y DDL (consulta y manipulación de tablas).
- un largo etc, que sin duda desconozco.

Pero sin duda, cambia el chip, porque Delphi es lo contrario a FoxPro. Me refiero a que es un lenguaje altamente tipificado, y por ello si tienes un string, no puedes ejecutar ese string. Otra cosa distinta es crear un sql en modo texto y pasarselo a una consulta, tipo:
Código Delphi [-]
var q : TQuery;
begin 
  q := TQuery.Create(self)
  q.database := database1; 
  q.Sql.Text := memo1.text ;
  dbgrid1.Dataset := q 
  q.Open();
end;

El truco aquí es que tú escribes el sql en el memo1 que tienes en la ventana.

Saludos.

edy_aca 11-08-2015 20:46:04

muchas gracias
 
que atentos y que amables se los agradezco mucho:)


La franja horaria es GMT +2. Ahora son las 23:29:06.

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