 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
AarzaK Cdt


Registrado: 13 May 2004Mensajes: 21
|
Publicado: Vie 09 Jul, 2004 8:17 pm Asunto: una pequeña ayuda cliente servidor... |
|
|
Hola espero esten todos bien aqui! bueno en realidad tengo una duda con este tipo de aplicaciones, probe uno de los ejemplos que tiene el builder en la red de la uni y no sirvio, en realidad lo que trato de hacer es de mandar un mensaje a un pc para indicarle que se le acabo el tiempo de sesion algo asi como el "net send" pero claro con codigo de c++builder, entonces no se si hay la posibilidad de que me puedan dar una guia de como debo programarlo, es decir, primero el socket, luego la ip de red, etc, en realidad no tengo experiencia en esto, gracias por la ayuda.
(Y)SALUDOS _________________ I was sent....
aarzak_@hotmail.com
http://aarzak.fadlan.com |
|
| Volver arriba |
|
 |
alfredo Master

Registrado: 13 Oct 2003Mensajes: 246Ubicación: Valencia Venezuela
|
Publicado: Vie 09 Jul, 2004 11:24 pm Asunto: |
|
|
Saludos, tambien soy de Venezuela estoy ubicado en Valencia, tengo
codigo fuente para controlar un cybercafe, funciona pero nunca lo
termine de depurar y optimizar pues lo emprendi como un pasatiempo
si piensas te puede servir dame tu direccion de correo y con gusto te
lo envio. |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Sab 10 Jul, 2004 5:35 am Asunto: |
|
|
Bien, yo tengo algo terminado y el programa se llama DsME-Net, para control de cybers, para enviar un mensaje debes hacer lo siguiente...
Primero lo primero.. 1 ServerSocket - Maquina Ser, 1 ClientSocket - Maquina Cliente.
Empezamos por el Servidor, las propiedades para el Server Socket las tengo de esta manera
| Código: | Propiedades ServerSocket
--------------------------------
Active = false
Name = ServerSocket1
Port = 6668 // uno libre igual para el ClienteSocket en Port
ServerType = stNonBlocking
|
en los eventos del Server Socket
solo tengo activo el
OnClientRead (ya sabes doble click) para escuchar a la estacion cuando me envia mensajes como "inicar", "Cerrar_Session" etc., asi mismo tengo dentro de una base, los nombres de las pc's-estaciones para saber a quien le envio el mensaje..
Para enviar el mensaje
utilizo el siguiente codigo...
| Código: | void __fastcall TFSERVIDOR::Button2Click(TObject *Sender)
{
if(!DBGrid1->Fields[0]->AsString.IsEmpty()){
AnsiString Cadena=InputBox("Mensaje a->"+DBGrid1->Fields[0]->AsString,"Escribe Mensaje","");
for(int a=0;a<this->ServerSocket1->Socket->ActiveConnections;a++){
if(DBGrid1->Fields[0]->AsString.UpperCase()==this->ServerSocket1->Socket->Connections[a]->RemoteHost.UpperCase())
this->ServerSocket1->Socket->Connections[a]->SendText("AVISO;"+Cadena);
}
}else
ShowMessage("Falta Nombre del Equipo");
} |
Como veras, tomo el nombre del equipo. de un DBGrid, en la primera columna DBGrid1->Fields[0]->AsString.UpperCase() y lo comparo, con la lista de Estaciones conectadas a travez de un for. esta list, me la da el server socket, ya que me regresa el nombre de los equipos, esto lo hago a travez del comando
| Código: | this->ServerSocket1->Socket->Connections[a]->SendText("AVISO;"+Cadena); |
con dos opciones. uno es el mensaje a la estacion "AVISO", y el otro es el mensaje Cadena, un ejemplo puede ser, "AVISO;estamos por cerrar"
el punto y coma me sirve para identificar el comando y dividir la cadena en 2 para un TStringList
[0] = "AVISO"
[1]= "estamos por cerrar"
///////////////////
ahora bien de lado de la estacion...
Las propieades del ClientSocket Son las Siguientes.
ClientSocket
---------------
Address = (nada)
ClientType = ctNonBlocking
Host = (nada)
Port = 6668 // el mismo que el servidor
bien, de manera rapida. como solo es para el mensaje. voy a omitir algunas cosas..
el codigo es para el Evento OnRead(dobleClick)
| Código: | void __fastcall TFESTACION::ClientSocket1Read(TObject *Sender,
TCustomWinSocket *Socket)
{
AnsiString Buff = Socket->ReceiveText();
AnsiString COMANDO,NOMBRE;
COMANDO=DivideCadena(Buff,";")->Strings[0];
/************************* RECEPCION DEL MENSAJE *********************/
if(COMANDO=="AVISO"){ // MOSTRAR MENSAJE.
NOMBRE=DivideCadena(Buff,";")->Strings[1];
TFMsg *CA = new TFMsg(this);
CA->Memo1->Lines->Clear();
CA->Memo1->Lines->Add(NOMBRE); // VIENE EL MENSAJE
CA->ShowModal();
delete CA;
}
} |
Cuando recibo el Mensaje, del Servidor, utilizo la siguiente funcion llamada Divide Cadena, se le pasa el texto y el separador ( en este caso ya que puede ser cualquier otro..
habro un mensaje tipo modal, con un Memo, donde pongo el mensaje.., este form tipo modal tiene tambien un boton cerrar.
Y por ultimo te pongo la funcion divideCadena
| Código: | //*******************funicion que divide una cadena a partir de un caracter ****
TStrings *__fastcall DivideCadena(AnsiString ctmp, AnsiString LetraDivisora){
TStringList *ArregloCadena = new TStringList();
int pos=ctmp.Pos(LetraDivisora);
if(pos!=0){
ArregloCadena->Add(ctmp.SubString(1,pos-1));
ctmp=ctmp.SubString(pos+1,ctmp.Length());
pos=ctmp.Pos(LetraDivisora);
while (pos!=0){
if (pos!=0){
ArregloCadena->Add(ctmp.SubString(1,pos-1));
ctmp=ctmp.SubString(pos+1,ctmp.Length());
}
pos=ctmp.Pos(LetraDivisora);
}
ArregloCadena->Add(ctmp.SubString(1,ctmp.Length()));
}else{
ArregloCadena->Add(ctmp);
}
return (ArregloCadena);
} |
como nota, puedes utilizar el mensaje tipo msn, que utiliza _LEO, para mostrar mensajes..
Saludos espero que haya quedado medio claro.. je je, cualquier cosa, nada mas pregunten... _________________
 |
|
| Volver arriba |
|
 |
AarzaK Cdt


Registrado: 13 May 2004Mensajes: 21
|
Publicado: Dom 11 Jul, 2004 5:32 am Asunto: Gracias! |
|
|
Muy agradecido César!!!, aunque veo el codigo un poco complicado bueno voy a ejecutarlo y sin tengo alguna duda te pregunto, nuevamente gracias por la ayuda!!!!!!!!!!!!!!!!.
Sr Alfredo mi email es aarzak_@hotmail.com, tambien le agradesco la ayuda!
(Y)SALUDOS _________________ I was sent....
aarzak_@hotmail.com
http://aarzak.fadlan.com |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Mar 13 Jul, 2004 2:02 am Asunto: |
|
|
Sr. Alfredo. seria de ayuda tambien para los demas el que pudiera establecer parte del codigo, de su programa. para muchos que se encuentren en lo mismo.. de paso dejo, mi direccion, que esta en el MSN, para el que quiera contactarme lo haga, con todo confianza..
saludos.. _________________
 |
|
| Volver arriba |
|
 |
AarzaK Cdt


Registrado: 13 May 2004Mensajes: 21
|
Publicado: Mar 13 Jul, 2004 5:35 am Asunto: 1.era Duda |
|
|
ok ya lo copie y coloque en los formularios el codigo,
pero en el evento OnClientRead del server que coloco??
tambien dices que tienes dentro de una base los nombres
de las pc eso quiere decir que debo crear una tabla con
los nombres de las pc para poder verla en el DBGrid1?
tambien aqui:
Codigo expuesto por ti:
this->ServerSocket1->Socket->Connections[a]->SendText("AVISO;"+Cadena);
con dos opciones. uno es el mensaje a la estacion "AVISO",
y el otro es el mensaje Cadena,un ejemplo puede ser,
"AVISO;estamos por cerrar" el punto y coma me sirve
para identificar el comando y dividir la
cadena en 2 para un TStringList
[0] = "AVISO"
[1]= "estamos por cerrar"
Disculpame Cesar pero me cuesta ver lo del TStringList
como lo instancio o no se como coloco la declaracion
en esa Matriz (TStringList
[0] = "AVISO"
[1]= "estamos por cerrar" ) Help I am Stuck!
//********En el lado del cliente:******************
Esta parte del codigo:
TFMsg *CA = new TFMsg(this);
CA->Memo1->Lines->Clear();
CA->Memo1->Lines->Add(NOMBRE); // VIENE EL MENSAJE
CA->ShowModal();
delete CA;
la cambie asi:
TForm *Form2 = new TForm(this)
Form2->Memo1->Lines->Clear();
Form2->Memo1->Lines->Add(NOMBRE); // VIENE EL MENSAJE
Form2->ShowModal();
delete Form2;
me da error Memo1 is not a member of TForm, como lo soluciono??
Cesar realmente te pido disculpas por mi falta de
destreza con el lenguaje pero lo que si te aseguro es que me
esfuerzo bastante. Gracias por la ayuda! _________________ I was sent....
aarzak_@hotmail.com
http://aarzak.fadlan.com |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Mar 13 Jul, 2004 3:34 pm Asunto: |
|
|
Bueno del Lado del Servidor, como la estaction esta bloqueada, me debe pedir "PERMISO", a travez del siguiente codigo, y utilizando la funciond divide cadena.. ( POR ELLA NO TE PREOCUPES, YA QUE AUTOMATICAMENTE TE REGRESA UN TSTRINGLIST, no debes declarar nada)
| Código: | void __fastcall TFSERVIDOR::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
AnsiString Buff = Socket->ReceiveText();
AnsiString COMANDO,NOMBRE;
COMANDO=DivideCadena(Buff,";")->Strings[0];
NOMBRE=DivideCadena(Buff,";")->Strings[1];
/********************PIDE PERMISO*******************************/
if(COMANDO =="PERMISO"){
ModoTable(DataModule1->TDNS,1);
DataModule1->TDNS->First();
int estado=0;
while(!DataModule1->TDNS->Eof){
if( DataModule1->TDNSPC->AsString=="\0xFF"||
DataModule1->TDNSPC->AsString==NOMBRE ){
estado=1;
break;
}
DataModule1->TDNS->Next();
}
if(estado){
DataModule1->TDNS->Edit();
}else{
DataModule1->TDNS->Append();
}
DataModule1->TDNSPC->Value=NOMBRE;
DataModule1->TDNSTIPO->Value="E";
DataModule1->TDNS->Post();
ModoTable(DataModule1->TDNS,0);
ModoTable(DataModule1->TTEMP,1);
if(!DataModule1->TTEMP->Locate("NPC","\0xff",TLocateOptions()) &&
!DataModule1->TTEMP->Locate("NPC",NOMBRE,TLocateOptions())){
DataModule1->TTEMP->Append();
}else{
DataModule1->TTEMP->Edit();
}
DataModule1->TTEMPNPC->Value=NOMBRE;
DataModule1->TTEMPTINICIAL->Value=Time();
DataModule1->TTEMPFECHA->Value = Date();
DataModule1->TTEMP->Post();
ModoTable(DataModule1->TTEMP,0);
for(int a=0;a<this->ServerSocket1->Socket->ActiveConnections;a++){
if(NOMBRE.UpperCase()==this->ServerSocket1->Socket->Connections[a]->RemoteHost.UpperCase()){
this->ServerSocket1->Socket->Connections[a]->SendText("CONCEDER");
break; // encontrado el equipo. salir del bucle
}
}
}
} |
Asi mismo despues de saber, el nombre de la PC, lo guardo en una tabla para saber si esta activa o no..
por lo del mensaje.. creo que no te has dado cuenta. que pararece un InputBox, que es donde pongo el mensaje
| Código: | void __fastcall TFSERVIDOR::Button2Click(TObject *Sender)
{
if(!DBGrid1->Fields[0]->AsString.IsEmpty()){
// AQUI VOY CON EL MENSAJE
AnsiString Cadena=InputBox("Mensaje a->"+DBGrid1->Fields[0]->AsString,"Escribe Mensaje","");
for(int a=0;a<this->ServerSocket1->Socket->ActiveConnections;a++){
if(DBGrid1->Fields[0]->AsString.UpperCase()==this->ServerSocket1->Socket->Connections[a]->RemoteHost.UpperCase())
this->ServerSocket1->Socket->Connections[a]->SendText("AVISO;"+Cadena);
}
}else
ShowMessage("Falta Nombre del Equipo");
} |
el errro que me comentas
| Cita: | Esta parte del codigo:
TFMsg *CA = new TFMsg(this);
CA->Memo1->Lines->Clear();
CA->Memo1->Lines->Add(NOMBRE); // VIENE EL MENSAJE
CA->ShowModal();
delete CA;
la cambie asi:
TForm *Form2 = new TForm(this)
Form2->Memo1->Lines->Clear();
Form2->Memo1->Lines->Add(NOMBRE); // VIENE EL MENSAJE
Form2->ShowModal();
delete Form2; |
Dentro del Form2 Tienes un Memo1?, si no es asi, pues no va a funcionar.. verifica, bien.. los componentes..
Espero que me hayas capturado en el Messenger, para poder enviarte imagenes del programa asi como poder aclarar tus dudas..
ccsg259@hotmail.com // mi correo _________________
 |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Mar 13 Jul, 2004 3:45 pm Asunto: |
|
|
por si no queda claro descompongo la funcion para enviar el mensaje a la estacion... , desde un boton...
| Código: |
void __fastcall TFSERVIDOR::Button2Click(TObject *Sender)
{
if(!DBGrid1->Fields[0]->AsString.IsEmpty()){ |
Me sirve para conparar si no esta vacio, es decir no le voy a enviar a una maquina que no existe, el mensaje.
| Código: | // AQUI VOY CON EL MENSAJE
AnsiString Cadena=InputBox("Mensaje a->"+DBGrid1->Fields[0]->AsString,"Escribe Mensaje",""); |
Aparece un InputBox, donde se escribe el Mensaje...
| Código: | for(int a=0;a<this->ServerSocket1->Socket->ActiveConnections;a++){
if(DBGrid1->Fields[0]->AsString.UpperCase()==this->ServerSocket1->Socket->Connections[a]->RemoteHost.UpperCase()) |
Entro en un for, para verificar el nombre de la Pc, tomado del DBGrid, porq que ahi se me ocurrio ponerlo ,y lo comparo con el nombre de las conexion existentens en el ServerSocket, si lo encuentro.. entonces
| Código: | this->ServerSocket1->Socket->Connections[a]->SendText("AVISO;"+Cadena); |
}
Envio el mensaje, ...->SendText("AVISO;"+Cadena)
Esto es lo que talves no te queda claro..
| Código: | }else
ShowMessage("Falta Nombre del Equipo");
} |
esto por sin o encuentro al equipo.. puede que la estacion este apagada...
saludos.. _________________
 |
|
| Volver arriba |
|
 |
AarzaK Cdt


Registrado: 13 May 2004Mensajes: 21
|
Publicado: Mar 13 Jul, 2004 10:44 pm Asunto: Una ves mas gracias... |
|
|
Sin duda alguna tu eres muy amable me has ayudado bastante, en lo que llegue a mi casa lo corro y te aviso, gracias.
(Y) SALUDOS! _________________ I was sent....
aarzak_@hotmail.com
http://aarzak.fadlan.com |
|
| Volver arriba |
|
 |
AarzaK Cdt


Registrado: 13 May 2004Mensajes: 21
|
Publicado: Jue 15 Jul, 2004 4:27 am Asunto: |
|
|
muy bien lo corri y me sale esto:
en el cliente:
Codigo:
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
TCustomWinSocket *Socket)
{
AnsiString Buff = Socket->ReceiveText();
AnsiString COMANDO,NOMBRE;
COMANDO=DivideCadena(Buff,";")->Strings[0];
/************************* RECEPCION DEL MENSAJE *********************/
if(COMANDO=="AVISO"){
// MOSTRAR MENSAJE.
NOMBRE=DivideCadena(Buff,";")->Strings[1];
TForm *Form2 = new TForm(this);
Form2->Memo1->Lines->Clear();
Form2->Memo1->Lines->Add(NOMBRE); // VIENE EL MENSAJE
Form2->ShowModal();
delete Form2;
}
}
//---------------------------------------------------------------------------
//*******************funicion que divide una cadena a partir de un caracter ****
TStrings *__fastcall DivideCadena(AnsiString ctmp, AnsiString LetraDivisora)
{
TStringList *ArregloCadena = new TStringList();
int pos=ctmp.Pos(LetraDivisora);
if(pos!=0){
ArregloCadena->Add(ctmp.SubString(1,pos-1));
ctmp=ctmp.SubString(pos+1,ctmp.Length());
pos=ctmp.Pos(LetraDivisora);
while (pos!=0){
if (pos!=0){
ArregloCadena->Add(ctmp.SubString(1,pos-1));
ctmp=ctmp.SubString(pos+1,ctmp.Length());
}
pos=ctmp.Pos(LetraDivisora);
}
ArregloCadena->Add(ctmp.SubString(1,ctmp.Length()));
}else{
ArregloCadena->Add(ctmp);
}
return (ArregloCadena);
}
//---------------------------------------------------------------------------
[C++ Error] Unit1.cpp(31): E2316 'Memo1' is not a member of 'TForm'
[C++ Error] Unit1.cpp(32): E2316 'Memo1' is not a member of 'TForm'
tengo una unidad 2
la cual tiene:
//---------------------------------------------------------------------------
#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm2 : public TForm
{
__published: // IDE-managed Components
TMemo *Memo1; //---------------------------->AQUI ESTA EL MEMO
private: // User declarations
public: // User declarations
__fastcall TForm2(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm2 *Form2;
//---------------------------------------------------------------------------
#endif
En el server:
ModoTable(DataModule1->TDNS,1);
esta funcion Modo Table cree un DataModule pero TDNS?? de donde lo saco? y disculpa mi idiotez  _________________ I was sent....
aarzak_@hotmail.com
http://aarzak.fadlan.com |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Jue 15 Jul, 2004 2:37 pm Asunto: |
|
|
El error se encuentra en esta linea
| Código: |
// tu forma de usar
TForm *Form2 = new TForm(this);
Form2->Memo1->Lines->Clear();
Form2->Memo1->Lines->Add(NOMBRE); // VIENE EL MENSAJE
Form2->ShowModal();
delete Form2
// la forma correcta, es jalarlo desde el TForm2
TForm2 *TuForm = new TForm2(this);
TuForm->Memo1->Lines->Clear();
TuForm->Memo1->Lines->Add(NOMBRE); // VIENE EL MENSAJE
TuForm->ShowModal();
delete TuForm;
|
si vas a utilizar la funcion divide cadena.. en todo el form ponlo antes del
| Código: |
TForm1 *Form1;
TForm2 *Form2;
TStrings *__fastcall DivideCadena(AnsiString ctmp, AnsiString LetraDivisora) |
La funcion a la que te refieres "ModoTable", es para abrir tablas de una manera mas rapida... es decir le pasas el 1.-"Nombre de la Tabla" y 2.-"el modo de apertura"
| Código: | void __fastcall ModoTable(TTable *Tabla, int modo){
TBookmark MyBookmark;
int estado;
if(!Tabla->IsEmpty()){
MyBookmark = Tabla->GetBookmark();
estado=1;
}else
estado=0;
if(modo==0){
Tabla->Active = false;
Tabla->ReadOnly= true; // NO PERMITE MODIFICAR DATOS
Tabla->Active = true;
}
if(modo==1){
Tabla->Active = false;
Tabla->ReadOnly= false; // SE PERMITE MODIFICAR DATOS
Tabla->Active = true;
}
if(! Tabla->IsEmpty() && estado==1){
Tabla->GotoBookmark(MyBookmark);
Tabla->FreeBookmark(MyBookmark);
}
} |
ejemplo
ModoTable(TDNS,1); // se pude modificar
ModoTable(TDNS,0); // NO se pude modificar, pero esta en modo lectura _________________
 |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Jue 15 Jul, 2004 2:42 pm Asunto: |
|
|
Siempre se me olvida todo... je je
la estructura del la tabla TDNS, es la siguiente
PC - A - 20
Tipo - A - 1
echa en paradox, la cual utilizo un TTable con el nombre (Name) TDNS, y un DataSource para enlazar los datos... _________________
 |
|
| Volver arriba |
|
 |
Invitado
|
Publicado: Jue 15 Jul, 2004 7:13 pm Asunto: |
|
|
Cesar disculpa por no responder antes, el codigo es un poco complicado
para ponerlo por este medio, pues tiene hasta rutinas de "defensa" en la parte del cliente similares a las de algunos virus, ademas puede ser algo
confuso ya que cuando lo hice no sabia lo que se hora de C++ ni le dedique el tiempo necesario.
me parecio ver la otra vez un servidor ftp no se si de _Leo o de Ikis, si fuera posible me gustaria colgar el proyecto alli. |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Jue 15 Jul, 2004 7:36 pm Asunto: |
|
|
Creo que el foro esde IKI.. la cuestion, si quieres y no ocupa mucho encriptado puedes enviarmelo al correo, ccgs259@hotmail.com. lo revisamos y hacemos algo mejor.. ya que tambien quiero instalarle un AntiSamp, para no dejar instalar nada al usuario.. _________________
 |
|
| Volver arriba |
|
 |
AarzaK Cdt


Registrado: 13 May 2004Mensajes: 21
|
Publicado: Lun 19 Jul, 2004 4:47 am Asunto: Tablas??? |
|
|
Disculpame César pero ahora tengo problemas con esto....
[C++ Error] Unit1.cpp(50): E2316 'TDNSPC' is not a member of 'TDataModule1'
[C++ Error] Unit1.cpp(63): E2316 'TDNSTIPO' is not a member of 'TDataModule1'
[C++ Error] Unit1.cpp(66): E2316 'TTEMP' is not a member of 'TDataModule1'
[C++ Error] Unit1.cpp(73): E2316 'TTEMPNPC' is not a member of 'TDataModule1'
[C++ Error] Unit1.cpp(74): E2316 'TTEMPTINICIAL' is not a member of 'TDataModule1'
[C++ Error] Unit1.cpp(75): E2316 'TTEMPFECHA' is not a member of 'TDataModule1' _________________ I was sent....
aarzak_@hotmail.com
http://aarzak.fadlan.com |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|