FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Cómo implementar el siguiente código en una clase
Hola, tengo este codigo [agrega datos de clientes a un archivo] y quisiera implementarle una clase para este codigo.
Código:
void __fastcall TAgregarCliente::menuNuevoClick(TObject *Sender) { editNombre->Text=""; editApellido->Text=""; editDni->Text=""; } void __fastcall TAgregarCliente::btnGuardarClick(TObject *Sender) { TS1->LoadFromFile("datos.txt"); if ((editNombre->Text != "")&&(editApellido->Text != "")&&(editDni->Text != "")){ for(int i=0; i<TS1->Count; i=i+3) { if (TS1->Strings[i]==editDni->Text) { editNombre->Text = ""; editApellido->Text = ""; editDni->Text=""; Application->MessageBox(L"El cliente ya es socio.",L"AVISO", MB_OK | MB_ICONEXCLAMATION); break; }else if (i==(TS1->Count-3)){ FILE *F1; char Nombre[30], Apellido[30], Dni[10]; strcpy(Nombre, AnsiString(editNombre->Text).c_str()); strcpy(Apellido, AnsiString(editApellido->Text).c_str()); strcpy(Dni, AnsiString(editDni->Text).c_str()); F1 = fopen("datos.txt", "a"); if( FS1 == NULL ){ ShowMessage("El archivo no se pudo guardar"); return; } fprintf(F1, "%s\n", Dni); fprintf(F1, "%s\n", Nombre); fprintf(F1, "%s\n", Apellido); fclose(F1); editNombre->Text = ""; editApellido->Text = ""; editDni->Text = ""; Application->MessageBox(L"Has agregado un nuevo cliente.",L"Nuevo cliente", MB_OK); } } }else { Application->MessageBox(L"Completar todos los campos.",L"AVISO", MB_OK | MB_ICONEXCLAMATION); } }
__________________
▶ https://www.facebook.com/riverplateoficial ◀ Última edición por ecfisa fecha: 01-07-2014 a las 15:17:44. |
#2
|
||||
|
||||
¿Y que problema tienes? Crea el .h y declara la clase con sus metodos publicos y demas.
|
#3
|
||||
|
||||
Si ya se, pero no se me ocurre cuales podrian ser sus atributos y metodos. Para que luego la pueda usar dentro de ese codigo.
__________________
▶ https://www.facebook.com/riverplateoficial ◀ Última edición por dec fecha: 03-07-2014 a las 14:58:42. Razón: Quitar negritas |
#4
|
||||
|
||||
Hola,
Me temo que el código en cuestión encierra muchas "cosas" que no son fáciles de dilucidar. Ahí se ven variables, objetos, etc., que no se sabe muy bien de dónde salen, y, así, es casi imposible ayudarte. Tal vez deberías plantear la cuestión de otra forma. Indicando, por ejemplo, qué es lo que se supone que quieres hacer y porqué crees que ello ha de estar en una clase aparte. Por otro lado, recuerda que en el foro se trata de ayudar a resolver problemas más concretos: no se trata de traducir código de un lenguaje a otro, ni de que se desarrollen clases enteras en base a cierto código, etc. Así que deberías concretar bastante más, en mi opinión. P.D. No escribas en "negrita", puesto que lo que tengas que decir se lee peor, al contrario de lo que pudiera parecer. |
#5
|
||||
|
||||
Cita:
__________________
▶ https://www.facebook.com/riverplateoficial ◀ |
#6
|
||||
|
||||
Hola,
En cualquier caso pides demasiado, en el sentido de que no concretas nada. Por otro lado, y, como te he dicho arriba, el código que has mostrado es difícilmente convertible en una clase: así podrías decírselo a quien te lo haya pedido si lo ha hecho tal cual. Tal vez, insisto, como ya he dicho arriba, podrías decir qué es lo que quieres conseguir, cuál debe ser la funcionalidad de la clase en cuestión. Ahí ya estarías pidiendo que te escribieran dicha clase... pero igual alguien tiene tiempo y ganas suficientes o al menos podría darte alguna orientación sobre cómo hacerlo tú mismo. Edito: Bueno; mirando de nuevo el código ya se me ocurre alguna cosa... pero yo no domino C++ como para hacer lo que tengo en la cabeza. Tal vez algún otro compañero pueda ayudarte, pues. Última edición por dec fecha: 03-07-2014 a las 16:15:11. |
#7
|
||||
|
||||
Hola,
No es exactamente lo mismo, porque, por lo demás debe haber muchísimas maneras de hacer lo mismo o algo parecido. Por otro lado, el siguiente código no es C++ (sino Delphi), pero, en fin, por si pudiera servirte de algo, aquí tienes:
|
#8
|
||||
|
||||
Cita:
__________________
▶ https://www.facebook.com/riverplateoficial ◀ |
#9
|
||||
|
||||
Hola eennzzoo.
Yo también había pensado en una opción similar a la publicada por dec. .h: Código:
#ifndef Unit2H #define Unit2H #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> class Cliente { private: String FNombre; String FApellido; String FDni; String FFileName; TStrings *FTS; public: Cliente(); __property String Nombre = { read = FNombre, write = FNombre }; __property String Apellido = { read = FApellido, write = FApellido }; __property String Dni = { read = FDni, write = FDni }; __property String FileName = { read = FFileName, write = FFileName }; bool Open(); bool GetData(const String Dni); bool Delete(const String Dni); bool Save(); ~Cliente(); }; #endif Código:
#pragma hdrstop #include "Unit2.h" #pragma package(smart_init) Cliente::Cliente() { FTS = new TStringList; } bool Cliente::Open() { FTS->LoadFromFile(FFileName); return FileExists(FFileName); } bool Cliente::GetData(const String Dni) { int p = FTS->IndexOf(Dni); if (p != -1) { FNombre = FTS->Strings[p-2]; FApellido = FTS->Strings[p-1]; FDni = FTS->Strings[p]; return true; } else { MessageBox(0,"Cliente no encontrado", "", MB_ICONERROR); return false; } } bool Cliente::Delete(const String Dni) { int p = FTS->IndexOf(Dni); bool r = false; if (p == -1) MessageBox(0,"Cliente no encontrado", "", MB_ICONERROR); else if (MessageBox(0, "¿ Borra el cliente ?","",MB_YESNO+MB_ICONQUESTION)==IDYES) { FTS->Delete(p); r = true; } return r; } bool Cliente::Save() { if (FNombre.IsEmpty() || FApellido.IsEmpty() || FDni.IsEmpty()) { MessageBox(0,"Faltan uno o mas datos requeridos", "", MB_ICONERROR); return false; } else if (FTS->IndexOf(FDni)!= -1) { MessageBox(0,"Cliente existente", "", MB_ICONERROR); return false; } else { FTS->Add(FNombre); FTS->Add(FApellido); FTS->Add(FDni); FTS->SaveToFile(FFileName); return true; } }; Cliente::~Cliente() { delete FTS; } Código:
... #include "Unit2.h" ... Cliente *cl; void __fastcall TForm1::FormCreate(TObject *Sender) { cl = new Cliente(); cl->FileName = "cliente.txt"; /* ruta+nombre de archivo */ cl->Open(); } void __fastcall TForm1::btnShowClick(TObject *Sender) { if (cl->GetData(Edit1->Text)) { edNom->Text = cl->Nombre; edApe->Text = cl->Apellido; edDni->Text = cl->Dni; } } void __fastcall TForm1::btnDeleteClick(TObject *Sender) { if (cl->Delete(Edit1->Text)) { edNom->Clear(); edApe->Clear(); edDni->Clear(); } } void __fastcall TForm1::btnSaveClick(TObject *Sender) { cl->Save(); } ... Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#10
|
||||
|
||||
Cita:
__________________
▶ https://www.facebook.com/riverplateoficial ◀ |
#11
|
||||
|
||||
Hola,
Conste que mi clase de más arriba contiene un error: no destruyo la instancia de "FContenidoBaseDatos". No me he dado cuenta antes. |
#12
|
||||
|
||||
ecfisa ¿Que es eso de __property? Suena mas a un componente.
|
#13
|
||||
|
||||
Hola aguml.
Básicamente una propiedad, es una extensión creada para C++ Builder que permite unificar métodos de acceso y modificación a miembros de una clase. Su uso no es privativo de los componentes. Cabe aclarar que C++ estandar no incluye el concepto de propiedad y que C++ Builder recibe de la VCL, si tratásemos con ANSI C++ tendríamos que escribir: Código:
class MiClass { private: int FValue; public: void SetValue(int Value) { FValue = Value; } int GetValue() { return FValue; } };
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
error de missing separator con el siguiente codigo | feliz-58 | C++ Builder | 7 | 28-03-2013 14:06:05 |
Como implementar este codigo en delphi 7 | freddiaz07 | Internet | 4 | 16-09-2011 22:34:39 |
Me he atascado en el siguiente código | David | PHP | 3 | 26-02-2007 00:15:52 |
Estoy atascado en el siguiente código | David | OOP | 4 | 01-10-2006 10:45:45 |
Implementar el constructor de una clase | Alcolea | OOP | 2 | 14-06-2006 06:39:05 |
|