Ver Mensaje Individual
  #8  
Antiguo 03-07-2014
Avatar de eennzzoo
eennzzoo eennzzoo is offline
Miembro
NULL
 
Registrado: nov 2013
Ubicación: Argentina
Posts: 59
Reputación: 11
eennzzoo Va por buen camino
Cita:
Empezado por dec Ver Mensaje
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:

Código Delphi [-]
unit UContactos;

interface

uses
  Classes, SysUtils;

type
  EContactoInvalido = Exception;

type
  TContacto = record
    DNI: string;
    Nombre: string;
    Apellidos: string;
  end;

type
  TContactos = class(TObject)
  private
    FRutaBaseDatos: string;
    FContenidoBaseDatos: TStrings;
  private
    function ExisteContacto(const datosContacto: TContacto): Boolean;
  public
    constructor Create(const rutaBaseDatos: string = '');
  public
    procedure GuardarContactos();
    function InsertarContacto(const datosContacto: TContacto): Integer;
  end;

implementation

const
  RUTA_POR_DEFECTO_BASE_DATOS = 'Contactos.txt';

resourcestring
  rsDatosContactoInvalidos = 'Datos del contacto inválidos.';

{ TContactos }

constructor TContactos.Create(const rutaBaseDatos: string = '');
begin
  FRutaBaseDatos := rutaBaseDatos;
  FContenidoBaseDatos := TStringList.Create();

  if Trim(FRutaBaseDatos) = EmptyStr then
    FRutaBaseDatos := ExtractFilePath(ParamStr(0))+RUTA_POR_DEFECTO_BASE_DATOS;

  if FileExists(rutaBaseDatos) then
    FContenidoBaseDatos.LoadFromFile(FRutaBaseDatos);
end;

function TContactos.InsertarContacto(const datosContacto: TContacto): Integer;
begin
  Result := -1;
  if (Trim(datosContacto.DNI) = EmptyStr)
   or (Trim(datosContacto.Nombre) = EmptyStr)
    or (Trim(datosContacto.Apellidos) = EmptyStr) then
  begin
    raise EContactoInvalido.Create(rsDatosContactoInvalidos);
  end;
  if not Self.ExisteContacto(datosContacto) then
  begin
    Result := FContenidoBaseDatos.Add(Format
    (
      '%s|%s|%s',
      [datosContacto.DNI, datosContacto.Nombre, datosContacto.Apellidos]
    ));
  end;
end;

procedure TContactos.GuardarContactos();
begin
  if Trim(FRutaBaseDatos) = EmptyStr then
    FRutaBaseDatos := ExtractFilePath(ParamStr(0))+RUTA_POR_DEFECTO_BASE_DATOS;
  FContenidoBaseDatos.SaveToFile(FRutaBaseDatos);
end;

function TContactos.ExisteContacto(const datosContacto: TContacto): boolean;
begin
  Result := FContenidoBaseDatos.IndexOf(datosContacto.DNI) = -1;
end;

end.
Ok gracias.
__________________
https://www.facebook.com/riverplateoficial
Responder Con Cita