Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-09-2008
RapiBurrito RapiBurrito is offline
Registrado
 
Registrado: sep 2008
Posts: 7
Poder: 0
RapiBurrito Va por buen camino
Ayuda con comunicacion entre programas Delphi

Hola!!!, Un saludo a todos!

Me llamo daniel y esta es la primera vez que posteo para pedir ayuda... y ya llevo un tiempito aca ehh!!

Antes que nada me gustaria agradecerles ya que gracias a uds, mi pequeña app(mal planteada, mal programada, mal pensada, etc XD) ha estado creciendo poco a poco, empezo por no ser nada y ahora ya casi es util(al menos para mi... aunque mis amigos me dicen que no T_T).

Bueno, mi app, tiene varias funciones, aki incluyo el Source del Unit1.

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TOgame = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Button1: TButton;
    Button3: TButton;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    GroupBox1: TGroupBox;
    Memo1: TMemo;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    GroupBox4: TGroupBox;
    GroupBox5: TGroupBox;
    GroupBox6: TGroupBox;
    GroupBox7: TGroupBox;
    Label1: TLabel;
    GroupBox8: TGroupBox;
    RadioButton3: TRadioButton;
    RadioButton4: TRadioButton;
    RadioButton5: TRadioButton;
    RadioButton6: TRadioButton;
    Edit5: TEdit;
    GroupBox9: TGroupBox;
    procedure Edit1Change(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure Edit3Change(Sender: TObject);
    procedure Edit3KeyPress(Sender: TObject; var Key: Char);
    procedure RadioButton1Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure RadioButton3Click(Sender: TObject);
    procedure RadioButton4Click(Sender: TObject);
    procedure RadioButton5Click(Sender: TObject);
    procedure RadioButton6Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Edit5Change(Sender: TObject);
    procedure Edit5Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
  public
    SS: integer;
    TIPO: String;
  end;

var
  Ogame: TOgame;

implementation


{$R *.dfm}

procedure TOgame.Edit1Change(Sender: TObject);
var
a: string;
begin
a:=edit1.text;
if length(a)=1
then
  Begin
  Edit2.SetFocus;
  End;
if length(a)>1
then
  Begin
  Edit1.Text:='';
  end;
end;

procedure TOgame.Edit2Change(Sender: TObject);
var
a: string;
begin
a:=edit2.text;
if length(a)=SS
then
  //Begin
  Edit3.SetFocus;
  //End;
if length(a)>SS
then
  //Begin
  Edit2.Text:='';
  //end;
end;

procedure TOgame.Edit3Change(Sender: TObject);
var
a: string;
b,c : integer;

begin
a:=edit3.text;
if length(Edit3.text) <> 0
then
  begin
  b:=strtoint(Edit3.text);
  if strtoint(Edit3.text)>15
    then
      Begin
      Showmessage('Error en el Nº del Planeta!');
      Edit3.SetFocus;
      Edit3.selectall;
      end;
  end;
if length(a)>2
then
  Begin
    Edit3.Text:='';
  end;
end;

procedure TOgame.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13
then
    Begin
     Edit4.Text:=Edit1.Text + ':' + Edit2.text + ':' + Edit3.text;
     Edit4.SetFocus;
    end;
end;

procedure TOgame.RadioButton1Click(Sender: TObject);
begin
RadioButton1.Checked:=TRUE;
RadioButton2.Checked:=FALSE;
SS:=2;
end;



procedure TOgame.RadioButton2Click(Sender: TObject);
begin
RadioButton1.Checked:=FALSE;
RadioButton2.Checked:=TRUE;
SS:=3;
end;

procedure TOgame.FormCreate(Sender: TObject);
begin
SS:=2;
end;

procedure TOgame.Button3Click(Sender: TObject);
begin
Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
Edit4.Clear;
Edit1.SetFocus;
end;



procedure TOgame.RadioButton3Click(Sender: TObject);
begin
RadioButton3.Checked:=TRUE;
RadioButton4.Checked:=FALSE;
RadioButton5.Checked:=FALSE;
RadioButton6.Checked:=FALSE;
TIPO:=' - Granja';
end;

procedure TOgame.RadioButton4Click(Sender: TObject);
begin
RadioButton3.Checked:=FALSE;
RadioButton4.Checked:=TRUE;
RadioButton5.Checked:=FALSE;
RadioButton6.Checked:=FALSE;
TIPO:=' - Bunker';
end;

procedure TOgame.RadioButton5Click(Sender: TObject);
begin
RadioButton3.Checked:=FALSE;
RadioButton4.Checked:=FALSE;
RadioButton5.Checked:=TRUE;
RadioButton6.Checked:=FALSE;
TIPO:=' - Amenaza';
end;

procedure TOgame.RadioButton6Click(Sender: TObject);
begin
RadioButton3.Checked:=FALSE;
RadioButton4.Checked:=FALSE;
RadioButton5.Checked:=FALSE;
RadioButton6.Checked:=TRUE;
TIPO:=Edit5.text;
end;

procedure TOgame.Button1Click(Sender: TObject);
begin
if length(Edit4.text)>5
then
  Begin
  Memo1.Lines.Add(Edit4.text + TIPO);

  End;
end;

procedure TOgame.Edit5Change(Sender: TObject);
begin
RadioButton3.Checked:=FALSE;
RadioButton4.Checked:=FALSE;
RadioButton5.Checked:=FALSE;
RadioButton6.Checked:=TRUE;
TIPO:=' - ' + Edit5.Text;
end;

procedure TOgame.Edit5Click(Sender: TObject);
begin
RadioButton3.Checked:=FALSE;
RadioButton4.Checked:=FALSE;
RadioButton5.Checked:=FALSE;
RadioButton6.Checked:=TRUE;
TIPO:=' - ' + Edit5.Text;
end;

procedure TOgame.FormActivate(Sender: TObject);
begin
Edit1.SetFocus;
end;

end.

Explico lo que hace el programa, hay un juego llamado OGame, en el tienes un planeta y desde alli mandas tu imperio,
Ok, cada planeta tiene coordenadas que vienen en este formato:

2:169:9

Esas son coordenadas, y en ellas se basa practicamente todo el juego .
En los edit1,2 y 3, se piden los 3 datos, y en el edit 4 se muestran los resultados(que es la suma de esos tres)
Puede darse el caso de que el numero del medio(Sistema Solar) se de 2 digitos, por lo cual he dado la
Opcion con unos radioButtons. Tambien tengo unos radiobuttons que cambian el mensaje que ira junto con las coordenadas hacia el memo !


Como muchos podran notar, no es la mejor de las aplicaciones, pero hace el trabajo.
Ultimamente he buscado mucho sobre conectividad entre aplicaciones
pues he decidido Poner el Memo1 en una aplicacion aparte(que ademas serviria de chat o algo parecido)
Esto para no amontonar codigo y para tener la funcion de chat como una opcion y no estar necesariamente en el programa
Salvando memoria y ayudando a las pc's lentas de algunos amigos mios.

Para la comunicacion entre app's he tratado de usar esto:

http://delphi.about.com/od/windowssh...m_copydata.htm

Pero debido a que esta en un ingles para el que soy algo obtuso y tambien por culpa de mis bajas habilidades
Me ha sido imposible implementarlo, he intentado de las mil maneras y nada,por eso posteo el codigo sin eso, para evitar despelote
La funcion Sender, seria llamada en Button1.Click, para que asi lo mande al memo(que seria otra aplicacion) y todos felices!

Bueno, de momento ese es el problema mas grande, integrar ambas aplicaciones.

Ando en Windows XP, con Delphi 7 Profesional,
Una pregunta Offtopic.... Tengo la oportunidad de cambiar al Delphi 7 Enterprise, Vale la pena?

Gracias a quienes me puedan ayudar

Ui se me olvidava, si pongo una letra en el ultimo edit, me tira exception... He tratado de manejarla,
He revisado la sintaxis mil veces... Pero sigo haciendo algo mal, Es algo que he borrado del programa y lamentablemente queda de parte del usuario
no poner la torta alli!

Un Saludo!
Responder Con Cita
  #2  
Antiguo 15-09-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
En la parte final del artículo está el código fuente completo.
¿Has intentado compilarlo?
¿Ese te funciona, o también te salta la excepción?

Lo comento por que tal vez no has visto el link. Tal vez si revisas ese te sea más fácil entenderlo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 15-09-2008
madiazg madiazg is offline
Miembro
 
Registrado: sep 2005
Ubicación: Canarias
Posts: 120
Poder: 19
madiazg Va por buen camino
Quizás te pueda ayudar este artículo de Delphi al Límite:
http://delphiallimite.blogspot.com/2...iones-sin.html
Saludos...
Miguel Angel
Responder Con Cita
  #4  
Antiguo 16-09-2008
RapiBurrito RapiBurrito is offline
Registrado
 
Registrado: sep 2008
Posts: 7
Poder: 0
RapiBurrito Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
En la parte final del artículo está el código fuente completo.
¿Has intentado compilarlo?
¿Ese te funciona, o también te salta la excepción?

Lo comento por que tal vez no has visto el link. Tal vez si revisas ese te sea más fácil entenderlo.
Lo que sucede compa, es que en el ultimo campo editable(edit3) puedes darte cuenta que hago una comprobacion para ver si el numero introducido es mayor que 15, para eso uso la funcion strtoint(edit3.text)(usaba), el problema, es que como la accion esta OnChange, al dar al button3(sirve para limpiar todos los campos) saltaba la excepcion(debido a que trata e convertir un texto vacio), trate de implementar la excepcion, para que me mostrara un mensage de error... pero termine borrandola ya que no funcionaba para nada...

Este codigo funciona, con Bugs pero funciona y hace lo que dice...

A lo otro que me dices, si, he revisado el codigo fuente al final de la pagina, pero cuando trato de implementarlo recibo cientos de errores que(debido a mis limitados conocimientos) desconozco.

Gracias por las respuestas, estoy leyendo el articulo que me pasaste de DelphialLimite !

Última edición por RapiBurrito fecha: 16-09-2008 a las 06:42:29.
Responder Con Cita
  #5  
Antiguo 16-09-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por RapiBurrito Ver Mensaje
...al dar al button3(sirve para limpiar todos los campos) saltaba la excepcion(debido a que trata e convertir un texto vacio), trate de implementar la excepcion...
En esos casos suele bastar con un IF que compruebe si el campo es vacío. Si es vacío no se debe intetar hacer la conversión; Algo así:

Código Delphi [-]
// comprobar...
if (edit3.Text = '') then begin
  // no convertir, fallará
end
else begin
  strtoint(edit3.text);
end;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 16-09-2008
RapiBurrito RapiBurrito is offline
Registrado
 
Registrado: sep 2008
Posts: 7
Poder: 0
RapiBurrito Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
En esos casos suele bastar con un IF que compruebe si el campo es vacío. Si es vacío no se debe intetar hacer la conversión; Algo así:

Código Delphi [-]// comprobar... if (edit3.Text = '') then begin // no convertir, fallará end else begin strtoint(edit3.text); end;
Exactamente asi esta !

Ya estoy metiendole el codigo de transmision de datos !

En español esta muuucho mas facil ^^!

Gracias por el Link!
Responder Con Cita
  #7  
Antiguo 12-10-2008
RapiBurrito RapiBurrito is offline
Registrado
 
Registrado: sep 2008
Posts: 7
Poder: 0
RapiBurrito Va por buen camino
Disculpen que responda de nuevo, pero ya he tratado varias veces de implementar el metodo q sale en la web y nada, me da error en Copydatastruct, creo que hice mal la declaracion de la estructura en si, es decir el:

Código Delphi [-]
TCopyDataStruct = packed record
 dwData: DWORD;   // de uso libre: para indicar por ejemplo el tipo de información a transmitir
 cbData: DWORD;   // el tamaño en bytes de los datos que se van a enviar
 lpData: Pointer; // puntero a los datos que se van a enviar
end;

Mi pregunta es, en donde va esa estructura, en uses, en implementation.... ???

Perdonen, pero soy bastante principiante, y le he dado horas a esto y solo me ha llegado frustracion, en el fonde se que sera algo estupido y que chocare la cabeza contra el piso varias veces u.u----

Bueno, gracias por la ayuda !
Responder Con Cita
Respuesta



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
Comunicacion entre programas totote Varios 5 07-02-2008 10:40:29
Ayuda! - Comunicación entre Aplicación Delphi y pagina ASP speralta Internet 0 22-05-2007 13:03:19
Comunicacion entre delphi y php vilamm PHP 3 15-12-2006 20:34:43
Comunicacion entre Java y Delphi davezf Providers 4 03-11-2006 19:25:01
Comunicación entre PC por Lan c748a Varios 1 04-05-2004 08:51:21


La franja horaria es GMT +2. Ahora son las 07:57:50.


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
Copyright 1996-2007 Club Delphi