Clipper On Line • Ver Tópico - FUNCOES: de Clipper para Delphi

FUNCOES: de Clipper para Delphi

Discussão sobre outras linguagens de programação.

Moderador: Moderadores

 

FUNCOES: de Clipper para Delphi

Mensagempor rochinha » 12 Mar 2010 22:56

Amiguinhos,

Veja algumas funções do Clipper compatibilizadas para Delphi Pascal:
procedure Commit( DataSet: TDataSet );
begin
  with DataSet do
  begin
    UpdateCursorPos;
    Check( dbiSaveChanges( Handle ) );
    CursorPosChanged;
  end;
end;

function LimpaNumeros( const Dados: string ): string;
var
  Contar: integer;
  Resultado: string;
begin
  Resultado := '';
  for Contar := 1 to Length( Dados ) do
  begin
    if Pos( Copy( Dados, Contar, 1 ) ,'-.0123456789' ) > 0 then
    begin
      if Copy( Dados, Contar, 1 ) = '.' then
        Resultado := Resultado + ','
      else
        Resultado := Resultado + Copy( Dados, Contar, 1 );
    end;
  end;
  if Copy( Resultado, 0, 1 ) = ',' then
    Resultado := '0' + Resultado;
  if Copy( Resultado, Length( Resultado ), 1 ) = ',' then
    Resultado := Resultado + '00';
  Result := Resultado;
end;

function FDateTime( const Mascara: string; Conteudo: TDateTime; Nulo: boolean ): string;
begin
  if Nulo then
    Result := Space( 10 )
  else
    Result := FormatDateTime( Mascara, Conteudo );
end;

function Transform( Conteudo: Extended; const Mascara: string ): string;
var
  TamMascara: integer;
  Brancos: string;
  Dados: string;
begin
  TamMascara := Length( Mascara );
  Dados := FormatFloat( Mascara, Conteudo );
  if TamMascara > Length( Dados ) then
  begin
    Brancos := Space( TamMascara - Length( Dados ) );
    Dados := Brancos + Dados;
  end;
  Transform := Dados;
end;

function Trim( Dados: string ): string;
var
  Contar: integer;
begin
  for Contar := Length( Dados ) downto 1 do
  begin
    if Copy( Dados, Contar, 1 ) <> ' ' then
      Break;
    Dados := Copy( Dados, 1, Contar - 1 );
    Application.ProcessMessages;
  end;
  Trim := Dados;
end;

function AllTrim( Dados: string ): string;
var
  Contar: integer;
begin
  Dados := Trim( Dados );
  for Contar := 1 to Length( Dados ) do
  begin
    if Copy( Dados, Contar, 1 ) <> ' ' then
      Break;
    Dados := Copy( Dados, Contar + 1, Length( Dados ) - 1 );
    Application.ProcessMessages;
  end;
  AllTrim := Dados;
end;

function Empty( Dados: string ): boolean;
begin
  if ( Length( Trim( Dados ) ) = 0 ) or
    ( Trim( Dados ) = '  /  /' ) then
    Empty := True
  else
    Empty := False;
end;

function NotEmpty( Dados: string ): boolean;
begin
  if Empty( Dados ) then
    NotEmpty := False
  else
    NotEmpty := True;
end;

function MMDDAA( Data: string ): string;
var
  sDia: string;
  sMes: string;
  sAno: string;
begin
  sDia := Copy( Data, 1, 2 );
  sMes := Copy( Data, 4, 2 );
  sAno := Copy( Data, 7, 4 );
  if sDia + sMes + sAno = '        ' then
    MMDDAA := ''
  else
    MMDDAA := sMes + '/' + sDia + '/' + sAno;
end;

function UltimoDiaDoMes( MesAno: string ): string;
var
  sMes: string;
  sAno: string;
begin
  sMes := Copy( MesAno, 1, 2 );
  if Length( MesAno ) = 7 then
    sAno := Copy( MesAno, 4, 4 )
  else
    sAno := Copy( MesAno, 4, 2 );
  if Pos( sMes, '01 03 05 07 08 10 12' ) > 0 then
    UltimoDiaDoMes := '31'
  else
    if sMes <> '02' then
      UltimoDiaDoMes := '30'
    else
      if ( StrToInt( sAno ) mod 4 ) = 0 then
        UltimoDiaDoMes := '29'
      else
        UltimoDiaDoMes := '28';
end;

function DiaMes( Data: TDateTime ): string;
begin
  Result := Dia(Data) + '/' + Mes(Data)
end;

function Dia( Data: TDateTime ): string;
var
  sAno, sMes, sDia: Word;
begin
  DecodeDate( Data, sAno, sMes, sDia );
  Dia := StrZero( sDia, 2 );
end;

function Mes( Data: TDateTime ): string;
var
  sAno, sMes, sDia: Word;
begin
  DecodeDate( Data, sAno, sMes, sDia );
  Mes := StrZero( sMes, 2 );
end;

function MesAno( Data: TDateTime ): string;
var
  sAno, sMes, sDia: Word;
begin
  DecodeDate( Data, sAno, sMes, sDia );
  MesAno := StrZero( sMes, 2 ) + '/' +
    StrZero( sAno, 4 );
end;

function Ano( Data: TDateTime ): string;
var
  sAno, sMes, sDia: Word;
begin
  DecodeDate( Data, sAno, sMes, sDia );
  Ano := StrZero( sAno, 4 );
end;

function Space(N: integer): string;
var
  I: integer;
  Dados: string;
begin
  Dados := '';
  for I := 1 to N do
  begin
    Dados := Dados + ' ';
    Application.ProcessMessages;
  end;
  Space := Dados;
end;

function StrZero(N: longint; Tamanho: integer): string;
var
  Conteudo: string;
  Diferenca: longint;
begin
  Conteudo := IntToStr( N );
  Diferenca := Tamanho - Length( Conteudo );
  if Diferenca > 0 then
    Conteudo := Repl( '0', Diferenca ) + Conteudo;
  StrZero := Conteudo;
end;

function Replicate(C: string; Tamanho: integer): string;
var
  Conteudo: string;
  Contar: integer;
begin
  Conteudo := '';
  for Contar := 1 to Tamanho do
  begin
    Conteudo := Conteudo + C;
    Application.ProcessMessages;
  end;
  Repl := Conteudo;
end;
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4313
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 565 vezes
Mens.Curtidas: 192 vezes

Re: FUNCOES: de Clipper para Delphi

Mensagempor Eric.Developer » 26 Out 2010 20:35

Olá Rochinha,
fiz algumas funções, uma dica para melhorar EMPTY:

function Empty( lValue: Boolean ):Boolean ; overload;
function Empty( iValue: Integer ):Boolean ; overload;
function Empty( sValue: String ):Boolean ; overload;
...data, etc
Delphi, SQL, FastReport | Xailer VxH Fivewin Minigui Hwgui [x]Harbour
Contate-me: Desenvolvimentos em geral | Treinamentos
Overview/Download: Xailer / Harbour Ferramenta profissional e mais completa.
Avatar de usuário

Eric.Developer
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 159
Data de registro: 31 Ago 2010 22:16
Curtiu: 0 vez
Mens.Curtidas: 7 vezes

Re: FUNCOES: de Clipper para Delphi

Mensagempor Maligno » 26 Out 2010 20:44

Uma curiosidade, Rochinha. Qual o motivo de "Application.ProcessMessages" nas funções Trim() e AllTrim()?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar de usuário

Maligno
Membro Master

Membro Master
 
Mensagens: 6432
Data de registro: 06 Jul 2004 01:40
Cidade/Estado: Londrina/PR
Curtiu: 1 vez
Mens.Curtidas: 12 vezes

Re: FUNCOES: de Clipper para Delphi

Mensagempor rochinha » 04 Nov 2010 15:00

Amiguinhos,

Eric:
Obrigado pela inclusão.

Maligno:
Estas funções fazem parte de um conjunto integrante do código do Miro 4, destinado a criar aplicativos para Delphi usando a velha interface em DOS.

Na épocao o Delphi estava entre a versão 1 e 3 e o código gerado era preparado para uso com estas versões.

Não sei o porque da referida instrução, pois não me aprofundei no conhecimento da ferramenta e nem do Delphi, pois já havia iniciando o conhecimento com a Fivewin.

Mas caso a instrução não surta nenhum efeito prático, que fique aqui o ensinamento.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4313
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 565 vezes
Mens.Curtidas: 192 vezes

Re: FUNCOES: de Clipper para Delphi

Mensagempor Maligno » 04 Nov 2010 15:14

Não fará o meno efeito, na maior parte das situações.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar de usuário

Maligno
Membro Master

Membro Master
 
Mensagens: 6432
Data de registro: 06 Jul 2004 01:40
Cidade/Estado: Londrina/PR
Curtiu: 1 vez
Mens.Curtidas: 12 vezes




Retornar para Outras linguagens de programação

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 3 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro