elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Como Soluciono esto en Delphi 7??
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como Soluciono esto en Delphi 7??  (Leído 3,741 veces)
xivan25

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Como Soluciono esto en Delphi 7??
« en: 10 Agosto 2013, 01:07 am »

Hola el caso es que estoy haciendo un programa cliente servidor y cuando envio una orden al Cliente para que realize una accion desde un button,cuando tiro a compilarlo me salta este error:

Código:
[Hint] UnitMain.pas(61): Variable 'h' is declared but never used in 'TFormMain.BtnEscucharClick'
[Hint] UnitMain.pas(167): Variable 'Recibido' is declared but never used in 'TFormMain.ServerSocketClientRead'
[Error] UnitMain.pas(206): Undeclared identifier: 'apagate'
[Fatal Error] UnitMain.pas(9): Could not compile used unit 'UnitMain'


En línea

xivan25

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Re: Como Soluciono esto en Delphi 7??
« Respuesta #1 en: 10 Agosto 2013, 02:01 am »

El Error me salta al poner esta instruccion en el button:
Código:
serversocket.Socket.SendText(apagate)


En línea

xivan25

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Re: Como Soluciono esto en Delphi 7??
« Respuesta #2 en: 10 Agosto 2013, 02:36 am »

corregi el error de escritura de orde,la correcta es esta:
Código:
serversocket.Socket.SendText('apagate')

Pero ahora me salta este error:
Windows socket error:No se permitio una solicitud para enviar
o recibir datos ya que el socket no esta conectado y no de ha
proporcionado ninguna direccion,al realizar el envio de un socket
de datagramas por medio de una llamada sendto (10057)
on API 'send'
En línea

Khronos14


Desconectado Desconectado

Mensajes: 443


A lie is a lie


Ver Perfil WWW
Re: Como Soluciono esto en Delphi 7??
« Respuesta #3 en: 10 Agosto 2013, 22:29 pm »

Como no pongas el código, no creo que nadie pueda ayudarte...
En línea

xivan25

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Re: Como Soluciono esto en Delphi 7??
« Respuesta #4 en: 11 Agosto 2013, 11:35 am »

Aqui esta el codigo:
Código:
unit UnitMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, ScktComp, ComCtrls, Buttons, StdCtrls, ImgList,
  Menus,
  UnitFormControl;

type
  TFormMain = class(TForm)
    ListViewConexiones: TListView;
    StatusBar: TStatusBar;
    ServerSocket: TServerSocket;
    ImageTitulo: TImage;
    BtnEscuchar: TSpeedButton;
    PopupMenuConexiones: TPopupMenu;
    Abrir1: TMenuItem;
    N1: TMenuItem;
    Ping1: TMenuItem;
    Cambiarnombre1: TMenuItem;
    ImageList: TImageList;
    SpeedButton1: TSpeedButton;
    Button1: TButton;
    procedure BtnEscucharClick(Sender: TObject);
    procedure ServerSocketClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSocketClientDisconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSocketClientError(Sender: TObject;
      Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
      var ErrorCode: Integer);
    procedure ListViewConexionesContextPopup(Sender: TObject;
      MousePos: TPoint; var Handled: Boolean);
    procedure Abrir1Click(Sender: TObject);
    procedure ServerSocketClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure SpeedButton1Click(Sender: TObject);
    procedure Cambiarnombre1Click(Sender: TObject);
    procedure Ping1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    procedure EliminarConexion(Socket: TCustomWinSocket);
    { Public declarations }
  end;

var
  FormMain: TFormMain;

implementation

uses UnitOpciones;

{$R *.dfm}

procedure TFormMain.BtnEscucharClick(Sender: TObject);
var
  h: TBitmap;
begin
  if BtnEscuchar.Caption = 'Escuchar' then
  begin
    try
      ServerSocket.Port := StrToInt(FormOpciones.EditPuerto.Text);
      ServerSocket.Open;
      FormOpciones.EditPuerto.Enabled := False;
      BtnEscuchar.Caption := 'Detener';
      StatusBar.Panels[0].Text := 'Esperando conexiones';
    except
      MessageDlg('El puerto ' + FormOpciones.EditPuerto.Text + ' ya está en uso o hay un firewall bloqueandolo, elija otro', mtWarning, [mbok], 0);
    end;
  end
  else
  begin
    ServerSocket.Close;
    ListViewConexiones.Clear;
    FormOpciones.EditPuerto.Enabled := True;
    BtnEscuchar.Caption := 'Escuchar';
    StatusBar.Panels[0].Text := 'Escucha detenida';
  end;
end;

procedure TFormMain.ServerSocketClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
var
  item: TlistItem;
  NuevaVentanaControl: TFormControl;
begin
  item := ListViewConexiones.Items.Add;
  item.Caption := Socket.RemoteAddress;
  item.SubItems.Add(' ');
  item.SubItems.Add(' ');
  item.SubItems.Add(' ');
  item.SubItems.Add(' ');
  item.SubItems.Add(' ');
  NuevaVentanaControl := TFormControl.Create(self, socket);
  //Para identificar esta conexión usaremos el Socket.Handle que lo guardaremos
  //como un objeto SubItems.Objects[0]
  item.SubItems.Objects[0] := TObject(Socket.Handle);
  //Guardamos tmb la ventana para ponder mostrarla
  item.SubItems.Objects[1] := NuevaVentanaControl;
  //Enviando esto recibimos del server la información para mostrar en el ListView IP-Nombre-CPU-SO-VER
  Socket.SendText('MAININFO');
end;

//Buscamos y eliminamos el socket que se ha desconectado en el listview
procedure TFormMain.EliminarConexion(Socket: TCustomWinSocket);
var
  i: integer;
begin
  //Buscamos y eliminamos el item del ListView
  for i := 0 to ListViewConexiones.Items.Count - 1 do
    if Socket.Handle = HWND(ListViewConexiones.Items[i].SubItems.Objects[0]) then
    begin
      //Cerramos la ventana que tenga asignada , si la tiene
      if ListViewConexiones.Items[i].SubItems.Objects[1] <> nil then
        (ListViewConexiones.Items[i].SubItems.Objects[1] as TFormControl).Close;
      ListViewConexiones.Items[i].Delete;
    end;
end;

procedure TFormMain.ServerSocketClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  EliminarConexion(Socket);
end;

procedure TFormMain.ServerSocketClientError(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
  EliminarConexion(Socket);
  ErrorCode := 0;
end;

procedure TFormMain.ListViewConexionesContextPopup(Sender: TObject;
  MousePos: TPoint; var Handled: Boolean);
begin
  if ListViewConexiones.Selected = nil then //No se ha seleccionado item, deshabilitar menu
  begin
    PopupMenuConexiones.Items[0].Enabled := False;
    PopupMenuConexiones.Items[2].Enabled := False;
    PopupMenuConexiones.Items[3].Enabled := False;
  end
  else
  begin
    PopupMenuConexiones.Items[0].Enabled := True;
    PopupMenuConexiones.Items[2].Enabled := True;
    PopupMenuConexiones.Items[3].Enabled := True;
  end;
end;

//Al dar al boton abrir
procedure TFormMain.Abrir1Click(Sender: TObject);
begin
  if ListViewConexiones.Selected <> nil then
    (ListViewConexiones.Selected.SubItems.Objects[1] as TFormControl).Show;
end;

procedure TFormMain.ServerSocketClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  i: integer;
  item: TListItem;
  Recibido: String;

begin
  //Buscamos a que item corresponde la conexión
  for i := 0 to ListViewConexiones.Items.Count - 1 do
    if Socket.Handle = HWND(ListViewConexiones.Items[i].SubItems.Objects[0]) then
    begin
      item := ListViewConexiones.Items[i];
      //Enviarle la conexión a la ventana de ese item, si la tiene
      if item.SubItems.Objects[1] <> nil then
        (item.SubItems.Objects[1] as TFormControl).OnRead(Socket);
    end;
end;

procedure TFormMain.SpeedButton1Click(Sender: TObject);
begin
  FormOpciones.ShowModal();
end;

procedure TFormMain.Cambiarnombre1Click(Sender: TObject);
begin
  MessageDlg('Lo siento, esta opción no está implementada', mtInformation, [mbok], 0);
end;

procedure TFormMain.Ping1Click(Sender: TObject);
var
  i: integer;

begin
  for i := 0 to ServerSocket.Socket.ActiveConnections -1 do
    if ServerSocket.Socket.Connections[i].Handle = HWND(ListViewConexiones.Selected.SubItems.Objects[0]) then
    begin
      ServerSocket.Socket.Connections[i].SendText('PING');
      //Como objeto 2 guardamos una captura dle tiempo en milisegundo
      ListViewConexiones.Selected.SubItems.Objects[2] := TObject(GetTickCount());
    end;
end;
 //ORDEN QUE ENVIO DESDE EL BUTTON Y ME SALTA EL ERROR ANTERIOR CITADO
procedure TFormMain.Button1Click(Sender: TObject);
begin
serversocket.Socket.SendText('apagate')
end;
 
end.
En línea

xivan25

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Re: Como Soluciono esto en Delphi 7??
« Respuesta #5 en: 12 Agosto 2013, 00:44 am »

¿¿Alguien tiene una idea de porque salta ese error??   :xD :xD :xD :xD :xD :xD :xD :xD :xD :xD :xD
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como parchear esto Form de delphi?
Ingeniería Inversa
02k0 2 2,492 Último mensaje 14 Abril 2016, 01:03 am
por 02k0
Ayuda que significa esto y como lo soluciono?
Java
Shory 1 1,478 Último mensaje 10 Abril 2017, 10:47 am
por Orubatosu
Please wait... We are checking your browser. Como lo soluciono?
Dudas Generales
DonPilin 7 3,957 Último mensaje 4 Febrero 2022, 16:17 pm
por Saberuneko
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines