Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-06-2006
JELIRM JELIRM is offline
Miembro
 
Registrado: feb 2005
Ubicación: EL SALVADOR
Posts: 124
Poder: 22
JELIRM Va por buen camino
Gracias seoane je,je y perdona pero es que tambien se parece a esta palabra inlgesa; asi que diculpa nuevamente, y ahorita voy a probar esa funcion, te comento mis resultados y problemas que esto conlleve gracias..
Responder Con Cita
  #2  
Antiguo 11-06-2006
JELIRM JELIRM is offline
Miembro
 
Registrado: feb 2005
Ubicación: EL SALVADOR
Posts: 124
Poder: 22
JELIRM Va por buen camino
Red face

seoane fijate que funciona de maravilla la funcion pero solo en mi pcquiero pero la funcion o la finanlidad de hacer esto era que esta aplicacion la voy a tener en una pc como SERVIDORA, entonces cuando otra maquina(Cliente) corra la aplicacion(Como ShourtCut) al Servidor le devuelva la ip pero de la maquina cliente.
lo hice pero en lugar que me devuelva la ip me devuelve el siguiente mensaje de error:
"CMD.EXE was started \\Nombre maquina del Servidor as the current directory path.UNC paths are not supported defaulting to windows directory."
y seguido a este mensaje me muestra la ip 10.xx.xx.xx (de la Cliente)la cual es correcta pero ese mensaje de error me hace clavo ahi.

gracias por tu ayuda.
Responder Con Cita
  #3  
Antiguo 11-06-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
A primera vista parece que le problema es debido a que cmd no permite usar una carpeta remota como directorio actual. Pues bien, le diremos que use otro, por ejemplo el de windows. En vez de esta linea:

Código Delphi [-]
if CreateProcess(nil, @Buffer, nil, nil, TRUE, CREATE_NEW_CONSOLE, nil, nil, si, pi) then

Coloca esta otra:
Código Delphi [-]
if CreateProcess(nil, @Buffer, nil, nil, TRUE, CREATE_NEW_CONSOLE, nil, 'C:\Windows\', si, pi) then

Eso deberia de solucionar ese error.
Responder Con Cita
  #4  
Antiguo 12-06-2006
JELIRM JELIRM is offline
Miembro
 
Registrado: feb 2005
Ubicación: EL SALVADOR
Posts: 124
Poder: 22
JELIRM Va por buen camino
Cool

Gracias seoane fijate que solucione el problema, la cuestion era que yo lo estaba haciendo con un acceso directo de la cliente al servidor; pero para solucionarlo hice un maping desde la cliente al servidor y Zaz!!! funcionó!! mapeando accede a todos los recursos como local, por eso no funcionaba en el acceso directo.
Pero ahora tengo otro problemita, y es que a veces no se porque cuando lo ejecuto el programa desde la cliente no me sale la ip sale null(en blanco) y cierro lo aplicacion y vuelvo a correr hasta que sale pero es en un orden aleatorio a veces me sale a la primera y a veces no, cosa que no sucede cuando lo ejecuto en el servidor como local.
te mostraré el codigo que tengo.
ponle atención al evento create del formulario ya que ahi puse mi codigo lo demós tu lo sabes mejor que nadie; pero lo puse completo para que lo veas talvez estoy fallando en el orden del codigo. pero mejor hechale un vistazo


Código:
unit Principal;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus;
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    MainMenu1: TMainMenu;
    Acercade1: TMenuItem;
    Salir1: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure Acercade1Click(Sender: TObject);
    procedure Salir1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
 
implementation
uses Acerca;
{$R *.dfm}
 function IsWinNT: boolean;
var
  OSV: OSVERSIONINFO;
begin
  OSV.dwOSVersionInfoSize := sizeof(osv);
  GetVersionEx(OSV);
  result := OSV.dwPlatformId = VER_PLATFORM_WIN32_NT;
end;
function CmdExec(Cmd: string): string;
var
  Buffer: array[0..4096] of Char;
  si: STARTUPINFO;
  sa: SECURITY_ATTRIBUTES;
  sd: SECURITY_DESCRIPTOR;
  pi: PROCESS_INFORMATION;
  newstdin, newstdout, read_stdout, write_stdin: THandle;
  exitcod, bread, avail: Cardinal;
begin
  Result:= '';
  if IsWinNT then
  begin
    InitializeSecurityDescriptor(@sd, SECURITY_DESCRIPTOR_REVISION);
    SetSecurityDescriptorDacl(@sd, true, nil, false);
    sa.lpSecurityDescriptor := @sd;
  end
  else sa.lpSecurityDescriptor := nil;
  sa.nLength := sizeof(SECURITY_ATTRIBUTES);
  sa.bInheritHandle := TRUE;
  if CreatePipe(newstdin, write_stdin, @sa, 0) then
  begin
    if CreatePipe(read_stdout, newstdout, @sa, 0) then
    begin
      GetStartupInfo(si);
      with si do
      begin
        dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;
        wShowWindow := SW_HIDE;
        hStdOutput := newstdout;
        hStdError := newstdout;
        hStdInput := newstdin;
      end;
      Fillchar(Buffer, SizeOf(Buffer), 0);
      GetEnvironmentVariable('COMSPEC', @Buffer, SizeOf(Buffer) - 1);
      StrCat(@Buffer,PChar(' /c ' + Cmd));
      if CreateProcess(nil, @Buffer, nil, nil, TRUE, CREATE_NEW_CONSOLE, nil, nil, si, pi) then
      begin
        repeat
          PeekNamedPipe(read_stdout, @Buffer, SizeOf(Buffer) - 1, @bread, @avail, nil);
          if bread > 0 then
          begin
            Fillchar(Buffer, SizeOf(Buffer), 0);
            ReadFile(read_stdout, Buffer, bread, bread, nil);
            Result:= Result + String(PChar(@Buffer));
          end;
          Application.ProcessMessages;
          GetExitCodeProcess(pi.hProcess, exitcod);
        until (exitcod <> STILL_ACTIVE) and (bread = 0);
      end;
      CloseHandle(read_stdout);
      CloseHandle(newstdout);
    end;
    CloseHandle(newstdin);
    CloseHandle(write_stdin);
  end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
ResultadoWin9x:String;
ResultadoWinNT:String;
BanderaWin9x:String;
begin
Label1.Caption:='';
  //Corre comando de Dos para Ip de WindowsNT hacia abajo
ResultadoWin9x:=(CmdExec('WINIPCFG | find "IP Address"'));
ResultadoWin9x:=StringReplace(ResultadoWin9x,'IP Address','',[rfReplaceAll]);
BanderaWin9x:=copy(ResultadoWin9x,2,8);

//Valida si La pc no Windows NT hacia abajo
if BanderaWin9x = 'WINIPCFG' then begin;
           //Corre comando de Dos para Ip de versiones windos WindowsNT y posterior
               ResultadoWinNT:=(CmdExec('IPCONFIG | find "IP Address"'));
               ResultadoWinNT:=StringReplace(ResultadoWinNT,'IP Address','',[rfReplaceAll]);
               Label1.Caption:='Su Dirección IP es:'+(ResultadoWinNT);
         end
            else
                  begin;
                   if BanderaWin9x <> 'WINIPCFG' then begin;
                        Label1.Caption:='Su Dirección IP es:'+(ResultadoWin9x);
                    end;
            end;
end;
procedure TForm1.Acercade1Click(Sender: TObject);
begin
Form2.showmodal;
end;
procedure TForm1.Salir1Click(Sender: TObject);
begin
close;
end;

end.

y gracias de nuevo
Responder Con Cita
  #5  
Antiguo 12-06-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Si lo unico que quieres es obtener la ip del equipo creo que te estas liando demasiado. Usa esta funcion para hacerlo:

Código Delphi [-]
uses Winsock;

function ObtenerIP : String;
var
  HostEnt: PHostEnt;
  Buffer: array[0..256] of Char;
  WSAData : TWSAData;
begin
  Result:= '';
  if WSAStartup(MAKEWORD(1, 1), WSAData) = 0 then
  begin
    if GetHostName(@Buffer, Sizeof(buffer)) = 0 then
    begin
      HostEnt := gethostbyname(@Buffer);
      if HostEnt <> nil then
        Result := inet_ntoa(PInAddr(HostEnt^.h_addr_list^)^);
    end;
    WSACleanup;
  end;
end;

Última edición por seoane fecha: 12-06-2006 a las 02:10:11.
Responder Con Cita
  #6  
Antiguo 12-06-2006
JELIRM JELIRM is offline
Miembro
 
Registrado: feb 2005
Ubicación: EL SALVADOR
Posts: 124
Poder: 22
JELIRM Va por buen camino
Cool

GRACIAS DE NUEVO
mira y como utilizo la funcion para que me devuelva el resultado en un string??
Responder Con Cita
  #7  
Antiguo 13-06-2006
Avatar de edelphi
edelphi edelphi is offline
Miembro
 
Registrado: jun 2006
Posts: 55
Poder: 21
edelphi Va por buen camino
Talking Ayuda

Hola Amigos, yo estoy buscando algo similar a esto; lo que deseo es hacer una backup de mi base de datos en posgresql, me dijeron que eso se hace por consola y no se que parametros le tendria que enviar para que desde un form se cree automaticamente.

estoy trabajando en delphi 7.0 con POsgesql 8, SO WinXP conexion ADO
espero sus respuestas y de antemano gracias
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ejecutar un programa dentro de otro. zugazua2001 Varios 1 24-06-2005 02:14:04
Ejecutar un programa externo desde un programa de Delphi Roger_Fernandez Varios 3 02-09-2004 18:05:36
Ejecutar Programa Dentro Del Tuyo ronson JAVA 6 04-06-2004 13:50:02
ejecutar un programa dentro de otro migueilichenco Varios 1 28-11-2003 20:39:03
Ejecutar un programa DENTRO de otro programa seduerey Varios 8 12-11-2003 13:56:20


La franja horaria es GMT +2. Ahora son las 04:15:26.


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