Ver Mensaje Individual
  #1  
Antiguo 15-09-2008
RapiBurrito RapiBurrito is offline
Registrado
 
Registrado: sep 2008
Posts: 7
Reputación: 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