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 02-03-2011
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Delphi y OO

No se como si usa una Property. Tengo una property que lee y escribe en una variable TString y otra en una TStrinList. Pues no se donde esta StringList es llenada, pues todo es object. Tengo duda con Property.

No consigo usar el Break Point en mi Delphi XE. En ninguno proyecto funciona, ninguno mismo.

Como pober mis DCU en un Folder y mi EXE en otro, pues en el Delphi XE no se como configurar. Gracias a todos.
Responder Con Cita
  #2  
Antiguo 02-03-2011
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola Paulao,
Para poder ayudarte apropiadamente sería de mucha ayuda que nos comentes como está diseñada la clase. ¿Puedes mostrarnos al menos una parte de su código?

Respecto lo de problemas con Delphi XE no puedo asesorarte, no utilizo dicha versión.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
Antiguo 02-03-2011
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.286
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
Hola Paulao, para el tema de las propiedades, es mejor que nos pongas código de cómo están definidas, tal y como ha dicho Delphius, de otra forma es difícil saber qué necesitas.

Para el tema de los breakpoints, mejor seguir en el hilo original y no mezclar.
__________________
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
  #4  
Antiguo 02-03-2011
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Esta primera Unit es las classes que uso y la otra llamada Main es el programa. Este programa solo tiene un Form(Main). El haz referencia a otras classes, pero solo puzo una por el espacio y creo que una solo es lo suficiente, ok? Voy hacer en dos post, pues estas mui largo en un unico post.

Código Delphi [-]
unit IndexDocument;

interface

uses StdCtrls;

type
  TIndexDocument = class
  private
    fMovedFileName: string;
    fPaginaOK: Boolean;
    fFinishedFileName: string;
    fTipoEdicao: string;
    fDataEdicao: TDateTime;
    fTipoPagina: string;
    fPagina: string;
    fOriginalFileName: string;
    fProximaPagina: string;
    fNumeroEdicao: Integer;
    fRuimFileName: string;
    fIndex: Integer;
    fImagem: TObject;
    fID: Int64;
    fFileMovido: Boolean;
    procedure SetPagina(const Value: string);
    function GetDestinationFileName: string;
  public
    procedure CalcularFileNames(const SrcPath, DstPath: string);
    function MoveFile: Boolean;
    procedure UndoMove;
    property OriginalFileName: string read fOriginalFileName write fOriginalFileName;
    property DataEdicao: TDateTime read fDataEdicao write fDataEdicao;
    property Pagina: string read fPagina write SetPagina;
    property TipoEdicao: string read fTipoEdicao write fTipoEdicao;
    property NumeroEdicao: Integer read fNumeroEdicao write fNumeroEdicao;
    property TipoPagina: string read fTipoPagina write fTipoPagina;
    property PaginaOK: Boolean read fPaginaOK write fPaginaOK;
    // Propriedades calculadas
    property FinishedFileName: string read fFinishedFileName;
    property MovedFileName: string read fMovedFileName;
    property RuimFileName: string read fRuimFileName;
    property ProximaPagina: string read fProximaPagina;
    property DestinationFileName: string read GetDestinationFileName;
    // Propriedades de ligação
    property Index: Integer read fIndex write fIndex;
    property Imagem: TObject read fImagem write fImagem;
    property ID: Int64 read fID write fID;
    // Utilidades
    property FileMovido: Boolean read fFileMovido;
  end;

implementation

uses Util, DateUtils, SysUtils;

{ TIndexDocument }

procedure TIndexDocument.CalcularFileNames(const SrcPath, DstPath: string);
var
  srPath: string;
  Ano, Mes, Dia: string;

  function FileNameNew: string;
  begin
    Result := Ano + Mes + Dia + '-'
      + IntToStr(NumeroEdicao) + '-'
      + TipoEdicao + '-' + Pagina + '-'
      + TipoPagina
      + ExtractFileExt(OriginalFileName);
  end;

  function BuildFileName(const FileName: string; Mv: Boolean): string;
  begin
    if Mv then
      Result := DstPath + 'MV\'
    else
      Result := DstPath + 'RU\';
    Result := FileNewLocation(SrcPath, srPath, Result);
    if Mv then
      Result := Result + FileName
    else
      Result := Result + FileNameNew;
  end;

  function BuildOkFileName: string;
  begin
    Result := DstPath + 'OK\';
    Result := FileNewLocation(SrcPath, srPath, Result);

    Result := Result + Ano + '\' + Mes + '\' + Dia + '\' + Pagina + '\';
    Result := Result + FileNameNew;
  end;

var
  oriName: string;
begin
  Ano := StrZero(YearOf(DataEdicao), 4);
  Mes := StrZero(MonthOf(DataEdicao), 2);
  Dia := StrZero(DayOf(DataEdicao), 2);

  srPath := ExtractFilePath(OriginalFileName);
  oriName := ExtractFileName(OriginalFileName);

  fMovedFileName := BuildFileName(oriName, true);
  fRuimFileName := BuildFileName(oriName, false);
  fFinishedFileName := BuildOkFileName;
end;

function TIndexDocument.GetDestinationFileName: string;
begin
  if PaginaOK then
    Result := FinishedFileName
  else
    Result := RuimFileName;
end;

function TIndexDocument.MoveFile: Boolean;
begin
  if not fFileMovido then
  begin
    ForceDirectories(ExtractFilePath(MovedFileName));
    fFileMovido := Util.MoveFile(OriginalFileName, MovedFileName, true);
  end;
  Result := fFileMovido;
end;

procedure TIndexDocument.SetPagina(const Value: string);
var
  A, B, C: string;
  pagNum: Integer;
begin
  LastNumberParts(Value, A, B, C);
  if not tryStrToInt(B, pagNum) then
    raise Exception.Create('Número da página inválido');

  // Página atual
  B := StrZero(pagNum, 3 - Length(A));
  fPagina := A + B + C;

  // Próxima página
  B := StrZero(pagNum + 1, 3 - Length(A));
  fProximaPagina := A + B + C;
end;

procedure TIndexDocument.UndoMove;
begin
  if PaginaOK then
    Util.DeleteFile(FinishedFileName)
  else
    Util.DeleteFile(RuimFileName);
  if fFileMovido then
    fFileMovido := not Util.MoveFile(MovedFileName, OriginalFileName, true);
end;

end.
Responder Con Cita
  #5  
Antiguo 02-03-2011
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Anejo las Unit Main y la Unit con las classes. No fue possible ponere aca, pues tine mas que 20000 caracteres.
Archivos Adjuntos
Tipo de Archivo: zip classes_delphi.zip (6,6 KB, 1 visitas)
Responder Con Cita
  #6  
Antiguo 02-03-2011
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola paolo,

no te he acabado de entender, pero si lo que quieres es crear una propiedad tipo TStrings se hace de este modo


Código Delphi [-]

type ...

private
 SS : TStrings;
...
protected SetSS(s : TStrings);
...
published
 property MiStrings : TStrings read SS write SetSS;

end;

...
implementation
...

constructor MiClase.Create(AOwner : TComponent);
begin
inherited Create(AOwner);
SS := TStringList.Create;
...
end;

destructor MiClase.Destroy;
begin
SS.Free;
end;

procedure SetSS(S : TStrings);
begin
SS.Assign(S);
end;

Hay algo en la ayuda de Delphi, por si he puesto algun error. Un saludo.
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


La franja horaria es GMT +2. Ahora son las 21:48:04.


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