Tabela de conteúdos


Workflow Studio \ Fluxo


Linguagem de Script


Scripts são usados em blocos SCRIPT na definição do fluxo. São uma forma muito poderosa e flexível de estender as funções básicas do diagrama de fluxo e permitem a criação de processos de negócio integrados.

É possível fazer diversas atividades através de scripts, entre outras:

A sintaxe padrão do script é Pascal. Todo o código inserido no bloco SCRIPT é interpretado e compilado em tempo de execução ao instanciar o fluxo.

Atenção: Não utilize funções que executem mensagens para o usuário (message dialogs ou input windows, por exemplo). São exemplos de funções que aguardam alguma entrada do usuário e como o fluxo é executado como um serviço este tipo de função irá parar a execução do fluxo.

Resultado do script


Todo script, ao ter sua execução finalizada, pode retornar um resultado ao fluxo. Este resultado pode ser utilizado para indicar se o código foi executado com sucesso ou até mesmo para direcionar o fluxo.

O resultado é definido através da variável result.

Por exemplo, para definir o resultado do script como 'sim', deve-se executar:

result := 'sim';

Desta forma o script irá retornar o valor 'sim' ao final da execução e seguir pela transição marcada como 'sim'.

Não é obrigatório que todo script retorne um valor, como em casos de algoritmos muito simples que não requeiram nenhum tratamento especial.

Dica: Em casos de script complexos (que envolvam manipulações de dados ou webservices) sempre usar pelo menos 2 valores para retorno de script. Um para indicar se o código foi executado com sucesso, e outro para indicar se houve falha e redirecionar o fluxo com algum tratamento de erro apropriado.

Linguagem de programação Pascal


Clique aqui para visualizar a apostila com os conceitos básicos de programação e linguagem Pascal.

Principais comandos


Try ... Finally ... End


Este bloco é usado quando, ao final da execução dos comandos que estiverem entre o “Try … Finally”, havendo ou não erros que não permitam a continuação da execução de todo o bloco, o sistema irá executar o que estiver entre “Finally … End”.

Nota: Este bloco é obrigatório para a criação de objetos, pois deve certificar-se que o mesmo seja liberado da memória em sua conclusão.

Exemplo

var
  casa1, casa2: Tcasa;
begin

  try
    casa1 := TCasa.create;

    casa2 := nil;
    if <condicao> then
    begin
      casa2 := TCasa.create;
    end;

  finally
    casa1.free;

    if casa2 <> nil then
     casa2.free;
  end;
end.

Try ... Except ... End


O comando “try…Except…End” serve para tratar erros possíveis e previstos.

Os comandos entre o Try e o Except serão executados se não contiverem erros, caso contrário, o que estiver depois do Except será executado.

Exemplo: Tratar a possibilidade da variável “x” ser ZERO.

var Resultado : integer;
try

  Resultado := 10 div x;

except
  Resultado := 0;
end;

If ... Then ... Else


O comando “If … Then … Else” especifica a condicional sobre a qual uma declaração será executado.

Sintaxe

If <Expressão1> then <expressão2> else <expressão3>;

Exemplo

var
  idade:integer;
begin
  idade := pIdade;
  If (idade < 1) or (idade > 120) then
    sMensagem := 'Você não está dizendo a verdade.'
  Else
    sMensagem := 'Ok!';
end;

Case ... of


O procedimento Case é usado para ramificar um código dependendo do resultado ou valor encontrado neste código.

Sintaxe

Case <expressão> of
  <valores>
else
  <valor>

Exemplo

var
  tecla: char;
begin
  tecla := pTexto;

  Case tecla of
    'A': sMensagem := 'Você digitou uma letra';
    '0': sMensagem := 'Você digitou um número';
  else
    sMensagem := 'Você digitou um caracter especial';
  end;
end;

Repeat ... Until


Os procedimentos entre Repeat e until são executados na seqüência enquanto uma condição seja satisfeita.

Sintaxe

Repeat
  <procedimentos>
Until <expressão>;

Exemplo

var
  a, b : integer;
begin
  b := 1;
  Repeat
    a := a + b;
    sMensagem := IntToStr(a) + IntToStr(b);
  Until a = 1000;
end;

While .. Do


A declaração While controla a execução repetida de uma declaração simples ou composta.

Sintaxe

While <expressão> do <procedimento>.

Exemplo

var
  a, b : integer;
begin
  b := 1;
  While a < 1001 Do
  begin
    a := a + b;
    sMensagem := IntToStr(a) + IntToStr(b);
  end;
end;

For .. Do


O bloco “For … Do” é uma declaração que será executada até que a variável de controle seja satisfeita.

Sintaxe

For <variável de controle> := <valor inicial> To ou Downto <valor final> Do <procedimentos>.

Exemplo

var
  cont, x : integer;
begin
  For cont := 1 To 100 Do
    begin
      x := x + cont;
      sMensagem := IntToStr(x);
    end;
end;

Goto / Label


A instrução Goto permite que você salte de onde está no momento para um linha rotulada específica. Um rótulo é definido usando-se a palavra label.

Sintaxe

Goto <rótulo>;
Label <rótulo>;

Exemplo

FIXME COMANDO “GOTO” NÃO ENCONTRADO

var
  resp : char;
  a, b : integer
begin
  b := 1;
  Label inicio:   
  a := a + b;
  sMensagem1 := IntToStr(a);
  sMensagem2 := 'Deseja somar mais um';
  resp := sResp;
  If (resp = 'S' or 's' or 'Y' or 'y') then Goto inicio;   
end;

Efetuando uma conexão ADO


Abaixo segue o exemplo de como efetuar uma conexão ADO para acessar uma base de dados Oracle:

FIXME “TADOConnection” NÃO ENCONTRADO

var
conexao: TADOConnection;
begin
  try
    conexao := TADOConnection.create(nil);
    conexao.connectionString := 'Provider=OraOLEDB.Oracle.1;Password=wfs_douglas;User ID=wfs_douglas;Data Source=wfs;';
    conexao.loginprompt := false;
    conexao.connected := true;
  finally
    conexao.free;
  end;
end;

Consulta ao banco de dados


Abaixo segue o exemplo de como efetuar uma consulta de banco de dados:

FIXME “TADOQueryEx” NÃO ENCONTRADO

var
query: TADOQueryEx;
begin
  try
    query := TADOQueryEx.create(nil);
    query.connection := conexao;
    query.setSql( 'select * from wfs_fluxos' );
    query.active := true;
  finally
    query.free;
  end;
end;

Biblioteca de funções


Este tópico descreve e exemplifica o uso de todas as funções utilizadas pelo WFS.

Funções específicas


Listagem das funções específicas do WFS.

ConectarDBSistema


A função estabelece uma conexão com um sistema cadastrado e que possua uma conexão válida. O parâmetro passado deverá ser exatamente o nome do sistema.

Sintaxe

ConectarDBSistema('RH3');

Exemplo

conexao := ConectarDBSistema('RH3');

Funções nativas


Listagem das funções nativas do Delphi e utilizadas no WFS.

Abs


A função Abs converte o valor do parâmetro em um valor absoluto, ou seja, um número positivo.

Sintaxe

Abs(Valor);

Exemplo

var Vl : integer;
begin
  Vl := Abs(-15); //Converte valores negativos para positivo
  sMensagem := IntToStr(Vl);
end;

AnsiCompareStr


Função utilizada para comparação entre strings. Esta função é case-sensitive.

Sintaxe

AnsiCompareStr(const S1, S2: string): Integer;

Exemplo

var
  strTexto, strTextoIgual, strTextoDiferente : string;
begin
  strTexto := 'Compara duas strings';
  strTextoIgual := 'Compara duas strings';
  strTextoDiferente  := 'String diferente';
  if  AnsiCompareStr(strTexto,strTextoIgual) = 0 then
    sMensagem := 'As strings são iguais'
  else
    sMensagem := 'As strings são diferentes';

  if  AnsiCompareStr(strTexto,strTextoDiferente) = 0 then
    sMensagem := 'As strings são iguais'
  else
    sMensagem := 'As strings são diferentes';
end;

AnsiCompareText


Função utilizada para comparação entre Strings. Esta função NÃO é case-sensitive.

Sintaxe

AnsiCompareText(const S1, S2: string): Integer;

Exemplo

var
  strTexto, strTextoIgual, strTextoDiferente : string;
begin
  strTexto := 'Compara duas strings';
  strTextoIgual := 'Compara duas strings';
  strTextoDiferente  := 'String diferente';

  if  AnsiCompareText(strTexto,strTextoIgual) = 0 then
    sMensagem := 'As strings são iguais'
  else
    sMensagem := 'As strings são diferentes';

  if  AnsiCompareText(strTexto,strTextoDiferente) = 0 then
    sMensagem := 'As strings são iguais'
  else
    sMensagem := 'As strings são diferentes';
end;

AnsiLowerCase


Converte todos os caracteres de uma string para minúsculo.

Sintaxe

AnsiLowerCase(const S: string): string;

Exemplo

var
  X: string;
Begin
  X := sValor;
  sMensagem := AnsiLowerCase(X);  { Label1 ficará tudo em letras minúsculas }
end;

AnsiUpperCase


Converte todos os caracteres de uma string para maiúsculo.

Sintaxe

AnsiUpperCase(const S: string): string;

Exemplo

var
  X: String;
Begin
  X := sValor;
  sMensagem := AnsiUpperCase(X); { Label1 ficará tudo em letras maiúsculas }
end;

Append


Insere um registro no final do arquivo.

Sintaxe

Append(var FileHandle: TextFile);

Exemplo

FIXME “Não permite o uso do comando readln com 2 parãmetros”

var
  myFile : TextFile;
  text   : string;

begin
  AssignFile(myFile, 'Test.txt');
  ReWrite(myFile);

  WriteLn(myFile, 'Hello');
  WriteLn(myFile, 'World');

  CloseFile(myFile);

  Append(myFile);

  WriteLn(myFile, 'Final line added');

  CloseFile(myFile);

  Reset(myFile);

  while not Eof(myFile) do
  begin
    ReadLn(myFile, text);
    sMensagem := text;
  end;

  CloseFile(myFile);
end;

ArcTan


É uma função matemática que dá o valor em radianos do arco tangente.

Sintaxe

ArcTan(const Number: Extended): Extended;

Exemplo

var
  float : single;
begin
  float := ArcTan(PI/2);
  sMensagem := 'ArcTan of PI/2 = '+FloatToStr(float);
end;

Assigned


A função Assigned verifica se a referência não é nula. Ela retorna True se não for nula, e False se for nula.

  Utilização de uma referência Nil irá resultar em uma excepção.

  As três versões do Assigned permitem a função de trabalhar com ponteiros de dados, referências a objetos e referências método de classe.

Sintaxe

Assigned(PointerName: Pointer ): Boolean;
Assigned(ObjectName: TObject ): Boolean;
Assigned(MethodName: Method ): Boolean;

Exemplo

var
  myPtr : PChar;

begin
  if Assigned(myPtr)
  then sMensagem := 'myPtr is not nil'
  else sMensagem := 'myPtr is nil';

  myPtr := Nil;
  if Assigned(myPtr)
  then sMensagem := 'myPtr is still not nil'
  else sMensagem := 'myPtr is nil';
end;

AssignFile


O procedimento AssignFile atribui um valor a FileHandle para um nome de arquivo, em preparação para a leitura ou escrita para esse arquivo.

  Assinatura 1

  Toma um tipo de variável arquivo de texto como a alça. O arquivo é tratado como um arquivo de texto quando aberto.

  Se o nome do arquivo é uma string vazia, então o acesso aos arquivos é feito para os fluxos de entrada e de saída padrão do console.

  Assinatura 2

  Toma um tipo de variável arquivo binário como a alça. O arquivo é tratado como um arquivo binário.

  Em ambos os casos, quando o arquivo é aberto por Append, Reset ou ReWrite, presume-se a estar no diretório atual.

Sintaxe

AssignFile (var FileHandle: TextFile; const FileName: string);
AssignFile (var FileHandle: File; const FileName: string);

Exemplo

FIXME

var
  myFile : TextFile;
  text   : string;

begin
  AssignFile(myFile, 'Test.txt');
  ReWrite(myFile);

  WriteLn(myFile, 'Hello');
  WriteLn(myFile, 'World');

  CloseFile(myFile);

  Reset(myFile);

  while not Eof(myFile) do
  begin
    ReadLn(myFile, text);
    sMensagem := text;
  end;

  CloseFile(myFile);
end;

Chdir


O procedimento Chdir configura o “drive + caminho” de trabalho para o diretório fornecido.   Se o diretório for inválido, retornará o erro ElnOutError e o diretório permanecerá inalterada.

Sintaxe

Chdir(const Directory: string );

Exemplo

FIXME

var
  directory : string;

begin
  GetDir(2, directory);
  sMensagem := 'Default C drive directory = '+directory;

  Chdir(directory);
  GetDir(2, directory);
  sMensagem := 'Default C drive directory = '+directory;

  Chdir('C:Bad/Path/Value');
  GetDir(2, directory);
  sMensagem := 'Default C drive directory = '+directory;
end;

Chr


Converte um inteiro em caractere.

Sintaxe

Chr(IntValue: Integer): AnsiChar;
Chr(IntValue: Integer): WideChar;

Exemplo

FIXME

var
  tab  : char;
  crlf : string;
begin
  tab := Chr(9);
  crlf := Chr(13)+Chr(10);
  sMensagem := 'Hello'+tab+'World';
  sMensagem := 'Hello'+crlf+'World';

  tab := ^I;  // I = 9th capital of the alphabet
  crlf := ^M^J;  // M = 13th, J = 10th letters

  sMensagem := 'Hello'+tab+'World';
  sMensagem := 'Hello'+crlf+'World';
end;

CloseFile


Fecha um arquivo aberto.

Sintaxe

CloseFile(var F);

Exemplo

var
  F: TextFile;
begin
  AssignFile(F, 'C:\TEM\ARQUIVO.TXT');
  Reset(F);
  sMensagem := IntToStr(FileSize(F));
  CloseFile(F);   { Fecha  o arquivo }
end;

CompareStr


Compara duas Strings para ver qual é a maior. Leva em consideração o Case-sensitive.

Sintaxe

CompareStr(const FirstString, SecondString: string): Integer;

Exemplo

FIXME

CompareText


Compara duas strings para ver qual é a maior. Não levando em consideração o Case-sensitive.

Sintaxe

CompareText(const String1, String2: string): Integer;

Exemplo

FIXME

Copy


Faz a cópia de parte de uma String ou Array.

Sintaxe

Copy(Source: string; StartChar, Count: Integer): string;
Copy(Source: array; StartIndex, Count: Integer): array;

Exemplo 1

var
  Source, Target : string;

begin
  Source := '12345678';
  Target := Copy(Source, 3, 4);
  sMensagem := 'Target : '+Target;
end;

Exemplo 2

var
  i : Integer;
  Source, Target : array of Integer;

begin
  for i := 1 to 8 do
    Source[i-1] := i;

  Target := Copy(Source, 3, 4);

  for i := 0 to Length(Target) -1 do
    sMensagem := 'Target['+IntToStr(i)+'] : '+IntToStr(Target[i]);
end;

Cos


Função matemática para recuperar o Cosseno de um número.

Sintaxe

Cos(const Number: Extended): Extended;

Exemplo

var
  float : single;
begin
  float := Cos(PI/3);
  sMensagem := 'Cos(PI/3) = '+FloatToStr(float);
end;

CreateOleObject


FIXME

Sintaxe

Exemplo

Date


Retorna a data atual.

Sintaxe

Date : TDateTime;

Exemplo

begin
  sMensagem := 'Yesterday = '+DateToStr(Yesterday);
  sMensagem := 'Today     = '+DateToStr(Date);
  sMensagem := 'Tomorrow  = '+DateToStr(Tomorrow);
  sMensagem := 'Today''s time = '+TimeToStr(Date);
end;

DateTimeToStr


Converte os valores de data e hora TDateTime para uma string.

Sintaxe

DateTimeToStr(DateTime: TDateTime): string;
DateTimeToStr(DateTime: TDateTime; const FormatSettings: TFormatSettings): string;

Exemplo

var
  myDate : TDateTime;

begin
  myDate := StrToDateTime('09/02/2002 12:00');
  sMensagem := 'Middle of a day = '+DateTimeToStr(myDate);

  myDate := StrToDateTime('09/02/2002 00:00');
  sMensagem := 'Start  of a day = '+DateTimeToStr(myDate);
end;

DateToStr


Converte um valor de data TDateTime para uma string.

Sintaxe

DateToStr(Date: TDateTime): string;
DateToStr(Date: TDateTime; const FormatSettings: TFormatSettings): string;

Exemplo

var
  myDate : TDateTime;

begin
  myDate := StrToDate('13/02/2002');
  sMensagem := 'myDate = '+DateToStr(myDate);
end;

DayOfWeek


Retorna o índice de um dia da semana.

Sintaxe

DayOfWeek(Date: TDateTime): Integer;

Exemplo

FIXME

var
  myDate : TDateTime;
  day    : string;

begin
  myDate := EncodeDate(2002, 12, 31);

  day := LongDayNames[DayOfWeek(myDate)];

  sMensagem := 'Christmas day 2002 is on a '+day;
end;

Dec


Diminui o valor de uma variável ordinal.

Sintaxe

Dec(var Variable: Ordinal variable);
Dec(var Variable: Ordinal variable; Count: Integer );

Exemplo

FIXME

var
  Character : char;
  Number    : Integer;
  Card      : TSuit;

begin
  Character := 'B';

  sMensagem := 'Character : '+Character;
  Dec(Character);
  sMensagem := 'Character-1 : '+Character;

  Number := 23;

  sMensagem := 'Number : '+IntToStr(Number);
  Dec(Number, 5);
  sMensagem := 'Number-5 : '+IntToStr(Number);

  Card := Clubs;

  sMensagem := 'Card starts at Clubs';
  Dec(Card);
  if Card = Hearts then sMensagem := 'Card is now Hearts';
  if Card = Clubs then sMensagem := 'Card is now Clubs';
  if Card = Diamonds then sMensagem := 'Card is now Diamonds';
  if Card = Spades then sMensagem := 'Card is now Spades';
end;

DecodeDate


Extrai o ano, mês, dia a partir de um TDateTime.

Sintaxe

DecodeDate(const SourceDate: TDateTime; out Year, Month, Day: Word);

Exemplo

var
  myDate : TDateTime;
  myYear, myMonth, myDay : Word;
begin
  myDate := StrToDate('29/12/2000');

  DecodeDate(myDate, myYear, myMonth, myDay);

  sMensagem := 'myDate now = '+DateToStr(myDate);
  sMensagem := 'myDay      = '+IntToStr(myDay);
  sMensagem := 'myMonth    = '+IntToStr(myMonth);
  sMensagem := 'myYear     = '+IntToStr(myYear);
end;

DecodeTime


Divide um TDateTime em valores de tempo individuais (Hora, minuto, segundo e milissegundos).

Sintaxe

DecodeTime(const SourceDateTime: TDateTime; out Hour, Min, Sec, MSec: Word);

Exemplo

var
  myDate : TDateTime;
  myHour, myMin, mySec, myMilli : Word;

begin
  myDate := StrToDateTime('29/12/2000 12:45:12.34');

  DecodeTime(myDate, myHour, myMin, mySec, myMilli);
  sMensagem := 'Time now = '+TimeToStr(myDate);
  sMensagem := 'Hour     = '+IntToStr(myHour);
  sMensagem := 'Minute   = '+IntToStr(myMin);
  sMensagem := 'Second   = '+IntToStr(mySec);
  sMensagem := 'MilliSec = '+IntToStr(myMilli);
end;

Delete


Excluir uma seção de caracteres de uma string.

Sintaxe

Delete(var Source: string; StartChar: Integer; Count: Integer);

Exemplo

var
  Source : string;

begin
  Source := '12345678';
  Delete(Source, 3, 4);
  sMensagem := 'Source now : '+Source;
end;

EncodeDate


Construir um valor TDateTime passando como parâmetro: ano, mês e dia.

Sintaxe

EncodeDate(const Year, Month, Day: Word ): TDateTime;

Exemplo

var
  myDate : TDateTime;

begin
  myDate := EncodeDate(2000, 02, 29);

  LongTimeFormat := 'hh:mm:ss.zzz';

  sMensagem := 'Date set to '+DateToStr(myDate);
  sMensagem := 'Time set to '+TimeToStr(myDate);
end;

EncodeTime


Criar um valor TDateTime passando como parâmetro: hora, min, segundo e milissegundos.

Sintaxe

EncodeTime(const Hour, Min, Sec, MSec: Word): TDateTime;

Exemplo

var
  myDate : TDateTime;

begin
  myDate := EncodeTime(12, 34, 56, 789);

  LongTimeFormat := 'hh:mm:ss.z';

  sMensagem := 'Date set to '+DateToStr(myDate);
  sMensagem := 'Time set to '+TimeToStr(myDate);
end;

EOF


Retorna um valor lógico se fim de arquivo.

FIXME

Sintaxe

Eof(var F): Boolean;

Exemplo

var
  F1, F2: TextFile;
  Ch: Char;
begin
  AssignFile(F1, 'c:\temp\arquivo.txt');
  Reset(F1);
  AssignFile(F2, 'c:\temp\arquivo.txt');
  Rewrite(F2);
  While not Eof(F1) Do
  begin
    Read(F1, Ch);
    Write(F2, Ch);
  end;
  CloseFile(F2);
  CloseFile(F1);
end;

Exp


Retorna o expoente de um número.

Sintaxe

Exp(Number: Extended): Extended;

Exemplo

var
  float : Double;
begin
  float := Ln(2);

  sMensagem := 'Ln(2) = '+FloatToStr(float);

  float := Exp(float);

  sMensagem := 'Exp(Ln(2)) = '+FloatToStr(float);
end;

FilePos


Retorna a posição de um arquivo de texto ou binário.

Sintaxe

FilePos(var FileHandle: File;): LongInt;
FilePos(var FileHandle: TextFile;);

FIXME

Exemplo

var
  myWord, myWord1, myWord2, myWord3 : Word;
  myFile : File of Word;

begin
  AssignFile(myFile, 'Test.cus');
  ReWrite(myFile);

  myWord1 := 123;
  myWord2 := 456;
  myWord3 := 789;
  Write(myFile, myWord1, myWord2, myWord3);

  CloseFile(myFile);

  FileMode := fmOpenRead;
  Reset(myFile);

  while not Eof(myFile) do
  begin
    Read(myFile, myWord);
    sMensagem := 'Record '+
                 IntToStr(FilePos(myFile))+' = '+
                 IntToStr(myWord);
  end;

  CloseFile(myFile);
end;

FileSize


Retorna a quantidade de registros de um arquivo aberto.

Sintaxe

FileSize(var FileHandle: File;): Integer;

FIXME

Exemplo

var
  myWord, myWord1, myWord2, myWord3 : Word;
  myFile : File of Word;

begin
  AssignFile(myFile, 'Test.cus');
  ReWrite(myFile);

  sMensagem := 'File size = '+IntToStr(FileSize(myFile));

  myWord1 := 123;
  myWord2 := 456;
  myWord3 := 789;
  Write(myFile, myWord1, myWord2, myWord3);

  sMensagem := 'File size now = '+IntToStr(FileSize(myFile));

  CloseFile(myFile);
end;

FloatToStr


Converter um valor de ponto flutuante para uma string.

Sintaxe

FloatToStr(Value: Extended): string;
FloatToStr(Value: Extended; const FormatSettings: TFormatSettings): string;

Exemplo

var
  amount1, amount2, amount3 : Extended;
begin
  amount1 := 1234567890.123456789;
  amount2 := 1234567890123456.123;
  amount3 := 1E100;

  sMensagem := 'Amount1 = '+FloatToStr(amount1);
  sMensagem := 'Amount2 = '+FloatToStr(amount2);
  sMensagem := 'Amount3 = '+FloatToStr(amount3);
end;

Format


Efetua a formatação de números e texto em uma string.

Sintaxe

Format(Const Formatting: string; Const Data: array of const): string;
Format(Const Formatting: string; Const Data: array of const; FormatSettings: TFormatSettings): string;

FIXME

Exemplo

var
  text : string;
begin
  sMensagem := Format('%s', ['Hello']));

  sMensagem := Format('String = %s', ['Hello']));

  sMensagem := Format('Decimal          = %d', [-123]);
  sMensagem := Format('Exponent         = %e', [12345.678]);
  sMensagem := Format('Fixed            = %f', [12345.678]);
  sMensagem := Format('General          = %g', [12345.678]);
  sMensagem := Format('Number           = %n', [12345.678]);
  sMensagem := Format('Money            = %m', [12345.678]);
  sMensagem := Format('Pointer          = %p', [addr(text)]);
  sMensagem := Format('String           = %s', ['Hello']);
  sMensagem := Format('Unsigned decimal = %u', [123]);
  sMensagem := Format('Hexadecimal      = %x', [140]);
end;

FormatDateTime


Transforma uma data em string.

Sintaxe

FormatDateTime(const Formatting: string; DateTime: TDateTime): string;
FormatDateTime(const Formatting: string; DateTime: TDateTime; const FormatSettings: TFormatSettings): string;

Exemplo

var
  myDate : TDateTime;

begin
  myDate    := StrToDateTime('10/10/2014');

  sMensagem := '              d/m/y = '+
              FormatDateTime('d/m/y', myDate);

  sMensagem := '           dd/mm/yy = '+
              FormatDateTime('dd/mm/yy', myDate);

  sMensagem := '  ddd d of mmm yyyy = '+
              FormatDateTime('ddd d of mmm yyyy', myDate);

  sMensagem := 'dddd d of mmmm yyyy = '+
              FormatDateTime('dddd d of mmmm yyyy', myDate);

  sMensagem := '              ddddd = '+
              FormatDateTime('ddddd', myDate);

  sMensagem := '             dddddd = '+
              FormatDateTime('dddddd', myDate);

  sMensagem := '                  c = '+
              FormatDateTime('c', myDate);
end;

FormatFloat


Transforma um número de ponto flutuante em uma string.

Sintaxe

FormatFloat(const Formatting: string; Value: Extended): string;
FormatFloat(const Formatting: string; Value: Extended; FormatSettings: TFormatSettings): string;

Exemplo

var
  float : extended;

begin
  float := 1234.567;

  sMensagem := '##### : '+FormatFloat('#####', float);
  sMensagem := '00000 : '+FormatFloat('00000', float);
  sMensagem := '0     : '+FormatFloat('0'    , float);
  sMensagem := '#,##0 : '+FormatFloat('#,##0', float);
  sMensagem := ',0    : '+FormatFloat(',0'   , float);

  sMensagem := '0.#### : '+FormatFloat('0.####', float);
  sMensagem := '0.0000 : '+FormatFloat('0.0000', float);

  sMensagem := '0.0000000E+00 : '+FormatFloat('0.0000000E+00', float);
  sMensagem := '0.0000000E-00 : '+FormatFloat('0.0000000E-00', float);
  sMensagem := '#.#######E-## : '+FormatFloat('#.#######E-##', float);

  sMensagem := '"Value = "0.0 : '+FormatFloat('"Value = "0.0', float);

  sMensagem := '0.0 : '+FormatFloat('0.0'              , -1234.567);
  sMensagem := '0.0 "CR";0.0 "DB" : '+
              FormatFloat('0.0 "CR";0.0 "DB"', -1234.567);
  sMensagem := '0.0 "CR";0.0 "DB" : '+
              FormatFloat('0.0 "CR";0.0 "DB"',  1234.567);

  sMensagem := '0.0 : '+FormatFloat('0.0' , 0.0);
  sMensagem := '0.0;-0.0;"Nothing" : '+
              FormatFloat('0.0;-0.0;"Nothing"', 0.0);
end;

Frac


Retornas a parte fracionária de um número de ponto flutuante.

Sintaxe

Frac(const Number: Extended): Extended;

Exemplo

begin
  sMensagem := 'Round(12.75) = '+IntToStr(Round(12.75));
  sMensagem := 'Trunc(12.75) = '+IntToStr(Trunc(12.75));
  sMensagem := '  Int(12.75) = '+FloatToStr(Int(12.75));
  sMensagem := ' Frac(12.75) = '+FloatToStr(Frac(12.75));
end;

GetActiveOleObject


FIXME

Sintaxe

Exemplo

High


Retorna o maior valor de um tipo ou variável.

Sintaxe

High(type or variable): Ordinal type;

Exemplo

var
  myChar  : TChar;
  myArray : TArray;
  myEnum  : TEnum;
  myShort : TShort;

begin
  sMensagem := 'High(TChar)   = '+IntToStr(Ord(High(TChar)));
  sMensagem := 'High(myChar)  = '+IntToStr(Ord(High(myChar)));
  sMensagem := 'High(TArray)  = '+IntToStr(High(TArray));
  sMensagem := 'High(myArray) = '+IntToStr(High(myArray));
  sMensagem := 'High(TEnum)   = '+IntToStr(Ord(High(TEnum)));
  sMensagem := 'High(myEnum)  = '+IntToStr(Ord(High(myEnum)));
  sMensagem := 'High(TShort)  = '+IntToStr(Ord(High(TShort)));
  sMensagem := 'High(myShort) = '+IntToStr(Ord(High(myShort)));
end;

Inc


Incrementa uma variável ordinal.

Sintaxe

Inc(var Variable: Ordinal variable ) ;
Inc(var Variable: Ordinal variable; Count: Integer);

FIXME

Exemplo

var
  Character : char;
  Number    : Integer;
  Card      : TSuit;

begin
  Character := 'A';

  sMensagem := 'Character : '+Character;
  Inc(Character);
  sMensagem := 'Character+1 : '+Character;

  Number := 23;

  sMensagem := 'Number : '+IntToStr(Number);
  Inc(Number, 5);
  sMensagem := 'Number+5 : '+IntToStr(Number);

  Card := Clubs;

  sMensagem := 'Card starts at Clubs';
  Inc(Card);
  if Card = Hearts then sMensagem := 'Card is now Hearts';
  if Card = Clubs then sMensagem := 'Card is now Clubs';
  if Card = Diamonds then sMensagem := 'Card is now Diamonds';
  if Card = Spades then sMensagem := 'Card is now Spades';
end;

IncMonth


Incrementa um certo número de meses em uma variável TDateTime.

Sintaxe

IncMonth(const StartDate: TDateTime {; NumberOfMonths : Integer = 1} ): TDateTime;

FIXME

Exemplo

var
  myDate : TDateTime;
begin
  myDate := StrToDate('31/01/2000');
  sMensagem := 'myDate = '+DateToStr(myDate);

  myDate := IncMonth(myDate);
  sMensagem := 'myDate + 1 month = '+DateToStr(myDate);

  myDate := IncMonth(myDate, 12);
  sMensagem := 'myDate + 12 months = '+DateToStr(myDate);
end;

InputQuery


Exibir uma caixa de diálogo que pede ao usuário para informar um texto.

Sintaxe

InputQuery(const Caption, Prompt: string; var UserValue: string): Boolean;

Exemplo

var
  value : string;

begin
  repeat
    if not InputQuery('Test program', 'Please type your name', value)
    then sMensagem := 'User cancelled the dialog';
  until value <> '';

  sMensagem := 'Hello '+value;
end;

Insert


Insira uma string em outra string.

Sintaxe

Insert(const InsertStr: string; var TargetStr: string; Position: Integer);

Exemplo

var
  Target : string;
begin
  Target := '12345678';
  Insert('-+-', Target, 3);
  sMensagem := 'Target : '+Target;
end;

Int


Retorna a parte inteira de um argumento.

Sintaxe

Int(X: Real): Real;

Exemplo

var
  R: Real;
begin
  R := Int(123.456);    { Mostra “123.0” }
  R := Int(-123.456);   { Mostra “-123.0” }
end;

Interpret (*)


FIXME

Sintaxe

Exemplo

IntToHex


Converter um número inteiro em uma string hexadecimal.

Sintaxe

IntToHex(DecimalValue: Integer; MinimumWidth: Integer): string;

Exemplo

begin
  sMensagem := '1234 decimal = '+IntToHex(1234, 1);

  sMensagem := '1234 decimal = '+IntToHex(1234, 8);
end;

IntToStr


Converter um número inteiro em uma string.

Sintaxe

IntToStr(Number: Integer): string;
IntToStr(BigNumber: Int64): string;

Exemplo

var
  NormalInteger : Integer;
  BigInteger    : Int64;

begin
  NormalInteger := 2147483647;
  BigInteger    := 9223372036854775807;

  sMensagem := 'NormalInteger :     '+IntToStr(NormalInteger);
  sMensagem := 'BigInteger :        '+IntToStr(BigInteger);
  sMensagem := 'Calculated number : '+IntToStr(27 * 4);
end;

IsLeapYear


Retorna true se um determinado ano civil é um ano bissexto.

Sintaxe

IsLeapYear(const Year: Word): Boolean;

Exemplo

begin
  if IsLeapYear(2000)
  then sMensagem := '2000 was a leap year'
  else sMensagem := '2000 was not a leap year';
end;

IsValidIdent


FIXME

Sintaxe

Exemplo

Length


Retorna o número de elementos de um Array ou string.

Sintaxe

Length(const SourceString: string): Integer;
Length(const SourceArray: array): Integer;

FIXME

Exemplo

var
  openArray  : array of char;
  fixedArray : array[2..4] of Integer;
  multiArray : array[2..4, 1..9] of Integer;
  shortStr   : shortstring;
  longStr    : string;
  i          : Integer;

begin
  SetLength(openArray, 17);

  sMensagem := 'Length of openArray = '+IntToStr(Length(openArray));
  sMensagem := 'Length of fixedArray = '+IntToStr(Length(fixedArray));
  sMensagem := 'Length of multiArray = '+IntToStr(Length(multiArray));

  shortStr := 'ABCDEFGH';
  longStr  := '12345678901234567890';
  sMensagem := 'Length of shortStr = '+IntToStr(Length(shortStr));
  sMensagem := 'Length of longStr = '+IntToStr(Length(longStr));

  for i := 1 to Length(shortStr) do
    sMensagem := 'Letter '+IntToStr(i)+' = '+shortStr[i];
end;

Ln


Retorna o logaritmo natural de um número.

Sintaxe

Ln(Number: Extended): Extended;

Exemplo

var
  float : Double;
begin
  float := Ln(2);

  sMensagem := 'Ln(2) = '+FloatToStr(float);

  float := Exp(float);

  sMensagem := 'Exp(Ln(2)) = '+FloatToStr(float);
end;

Low


Retorna o menor valor de um tipo ou variável.

Sintaxe

Low(type or variable): Ordinal type;

Exemplo

var
  myChar  : TChar;
  myArray : TArray;
  myEnum  : TEnum;
  myShort : TShort;

begin
  sMensagem := 'Low(TChar)    = '+IntToStr(Ord(Low(TChar)));
  sMensagem := 'Low(myChar)   = '+IntToStr(Ord(Low(myChar)));

  sMensagem := 'Low(TArray)   = '+IntToStr(Low(TArray));
  sMensagem := 'Low(myArray)  = '+IntToStr(Low(myArray));
  sMensagem := 'High(myArray) = '+IntToStr(High(myArray));
 
  sMensagem := 'Low(TEnum)    = '+IntToStr(Ord(Low(TEnum)));
  sMensagem := 'Low(myEnum)   = '+IntToStr(Ord(Low(myEnum)));
  sMensagem := 'High(myEnum)  = '+IntToStr(Ord(High(myEnum)));

  sMensagem := 'Low(TShort)   = '+IntToStr(Ord(Low(TShort)));
  sMensagem := 'Low(myShort)  = '+IntToStr(Ord(Low(myShort)));
end;

LowerCase


Coloca todos os caracteres de uma string em minúsculo.

FIXME

Sintaxe

LowerCase(const MixedString: string ): string;

Exemplo

Machine (*)


FIXME

Sintaxe

Exemplo

Now


Retorna a data e hora corrente;

Sintaxe

Now: TDateTime;

Exemplo

var
  pTexto: string;
begin
  pTexto := 'A data e hora é ' + DateTimeToStr(Now);  { Mostra a hora e data }
end;

Odd


Testa se um número inteiro tem um valor ímpar.

Sintaxe

Odd(Number: Integer | Int64 ): Boolean;

Exemplo

var
  i : Integer;

begin
  for i := 1 to 9 do
    if Odd(i) then sMensagem := IntToStr(i);
end;

Ord


Fornece o valor ordinal de um número inteiro, character ou enum.

Sintaxe

Ord(Arg: AnsiChar | Char | WideChar | Enumeration | Integer ): Integer;
Ord(Arg: Int64 ): Int64;

Exemplo

var
  A   : AnsiChar;
  C   : Char;
  W   : WideChar;
  E   : Boolean;
  I   : Integer;
  I64 : Int64;

begin
  A   := 'A';
  C   := 'C';
  W   := 'W';
  E   := True;
  I   := 22;
  I64 := 64;

  sMensagem := 'A = '+IntToStr(Ord(A));
  sMensagem := 'C = '+IntToStr(Ord(C));
  sMensagem := 'W = '+IntToStr(Ord(W));
  sMensagem := 'E = '+IntToStr(Ord(E));
  sMensagem := 'I = '+IntToStr(Ord(I));
  sMensagem := 'I64 = '+IntToStr(Ord(I64));
end;

Pos


Encontre a posição de uma string em outra.

Sintaxe

Pos(const Needle, HayStack: string ): Integer;

FIXME

Exemplo

Raise


Levantar uma exceção.

Sintaxe

Raise
Raise Object reference
Raise Object reference At Address pointer

FIXME

Exemplo 1

var
  fred, jim : string;
begin
  fred := 'Good name';
  jim  := 'Badname  ';

  try
    sMensagem := fred+' swapped = '+SwapNames(fred);
    sMensagem := jim+' swapped = '+SwapNames(jim);
  except
    On E : Exception do
      sMensagem := E.Message;
  end;
end;
var
  blankPos : Integer;
  i        : Integer;
  nameLen  : Integer;
begin
  Result := '';

  blankPos := Pos(' ', name);

  nameLen := Length(name);
  if (blankPos > 0) and (blankPos < nameLen)
  then
  begin
    i := blankPos + 1;
    repeat
      if name[i] <> ' '
      then Result := Copy(name, i, nameLen-i+1) + ' ' +
                     Copy(name, 1, blankPos-1)

      else Inc(i);
    until (i > nameLen) or (Length(Result) > 0);
  end;

  if Length(Result) = 0
  then Raise Exception.CreateFmt('Invalid name : ''%s''', [name]);
end;

Exemplo 2

var
  age : Integer;
  exc : EBadAge;
begin
  age := 23;
  if age < 30
  then
  begin
    exc := EBadAge.CreateFmt('Bad age : %d',[age]);

    Raise exc;
  end;
end;

Random


Gerar um ponto de flutuação aleatória ou número inteiro.

Sintaxe

Random : Extended;
Random (LimitPlusOne: Integer): Integer;

FIXME

Exemplo

var
  float : single;
  int   : Integer;
  i     : Integer;

begin
  for i := 1 to 5 do
  begin
    float := Random;
    sMensagem := 'float = '+FloatToStr(float);
  end;

  for i := 1 to 5 do
  begin
    int := 1 + Random(100);
    sMensagem := 'int = '+IntToStr(int);
  end;
end;

ReadLn


Leia uma linha completa de dados a partir de um arquivo de texto.

Sintaxe

ReadLn(var Variable1 {,var Variable2...} );
ReadLn(var FileHandle: TextFile; var Variable1 {,var Variable2...} ) ;

FIXME

Exemplo

var
  myFile : TextFile;
  n1, n2, n3 : Integer;

begin
  AssignFile(myFile, 'Test.txt');
  ReWrite(myFile);

  WriteLn(myFile, '1 2 3 4');   // Note that the 4 will be ignored

  WriteLn(myFile, 5, ' ', 6, ' ', 7);

  WriteLn(myFile, '8 9');       // Missing numbers will be seen as 0

  CloseFile(myFile);

  Reset(myFile);

  while not Eof(myFile) do
  begin
    ReadLn(myFile, n1, n2, n3);
    sMensagem := IntToStr(n1)+' '+
                 IntToStr(n2)+' '+
                 IntToStr(n3);
  end;

  CloseFile(myFile);
end;

Reset


Abre um arquivo de texto para leitura, ou um arquivo binário para leitura / escrita.

Sintaxe

Reset(var FileHandle: TextFile);
Reset(var FileHandle: File {RecordSize);

FIXME

Exemplo

var
  myFile : TextFile;
  text   : string;

begin
  AssignFile(myFile, 'Test.txt');
  ReWrite(myFile);

  WriteLn(myFile, 'Hello');
  WriteLn(myFile, 'World');

  CloseFile(myFile);

  FileMode := fmOpenRead;
  Reset(myFile);

  while not Eof(myFile) do
  begin
    ReadLn(myFile, text);
    sMensagem := text;
  end;

  CloseFile(myFile);
end;

Rewrite


Abra um arquivo de texto ou binário com acesso de gravação.

Sintaxe

Rewrite(var FileHandle: TextFile);
Rewrite(var FileHandle: File {RecordSize );

FIXME

Exemplo

var
  myFile : TextFile;
  text   : string;

begin
  AssignFile(myFile, 'Test.txt');
  Rewrite(myFile);

  WriteLn(myFile, 'Hello');
  WriteLn(myFile, 'World');

  CloseFile(myFile);

  Reset(myFile);

  while not Eof(myFile) do
  begin
    ReadLn(myFile, text);
    sMensagem := text;
  end;

  CloseFile(myFile);
end;

Round


Arredonda um número de ponto flutuante para um inteiro.

Sintaxe

Round(const Number: Extended): Int64;

Exemplo

begin
  sMensagem := 'Round(12.75) = '+IntToStr(Round(12.75));
  sMensagem := 'Trunc(12.75) = '+IntToStr(Trunc(12.75));
  sMensagem := 'Int(12.75) = '+FloatToStr(Int(12.75));
  sMensagem := 'Frac(12.75) = '+FloatToStr(Frac(12.75));
end;

Scripter (*)


FIXME

Sintaxe

Exemplo

SetOf (*)


FIXME

Sintaxe

Exemplo

Sin


O seno de um número.

Sintaxe

Sin(const Number: Extended): Extended;

Exemplo

var
  float : single;
begin
  float := Sin(PI/6);
  sMensagem := 'Sin(PI/6) = '+FloatToStr(float);
end;

Sqr


Retorna um número ao quadrado.

Sintaxe

Sqr(X: Real): (Real);

FIXME

Exemplo

var
  S, Temp: String;
begin
  FloatoStr(Sqr(5.0):2:1, Temp);  { Retorna 25.0 }
  S := '5 ao quadrado é ' + Temp;
  sMensagem := S;
end;

Sqrt


Retorna a raiz quadrada de um número.

Sintaxe

Sqrt(Number: Extended): Extended;

FIXME

Exemplo

var
  number, squareRoot : Extended;

begin
  number  := 225;
  squareRoot := Sqrt(number);
  sMensagem := 'Square root of ' + number + ' = ' squareRoot;

  number  := 3.456;
  squareRoot := Sqrt(number);
  sMensagem := 'Square root of ' + number + ' = ' squareRoot;

  number := Infinity;
  number := Sqrt(number);
  sMensagem := 'Square root of Infinity = ' + number;
end;

StrToDate


Converte uma string de data em um valor TDateTime.

Sintaxe

StrToDate(const Date: string): TDateTime;
StrToDate(const Date: string; const FormatSettings: TFormatSettings): TDateTime;

Exemplo

var
  myDate : TDateTime;

begin
  myDate := StrToDate('15/03/75');
  sMensagem := '15/03/75   = '+DateTimeToStr(myDate);
  myDate := StrToDate('01/01/2075');
  sMensagem := '01/01/2075 = '+DateTimeToStr(myDate);
end;

StrToDateTime


Converte uma string de “data + hora” em um valor TDateTime.

Sintaxe

StrToDateTime(const DateTime: string): TDateTime;
StrToDateTime(const DateTime: string; const FormatSettings: TFormatSettings): TDateTime;

Exemplo

var
  myDateTime : TDateTime;

begin
  myDateTime := StrToDateTime('23/02/75   12');
  sMensagem := '23/02/75   12      = '+DateTimeToStr(myDateTime);

  myDateTime := StrToDateTime('23/02/2075 12:34:56');
  sMensagem := '23/02/2075 12:34:56 = '+DateTimeToStr(myDateTime);
end;

StrToFloat


Converter uma string de número em um valor de ponto flutuante.

Sintaxe

StrToFloat(FloatString: string): Extended;
StrToFloat(FloatString: string; const FormatSettings: TFormatSettings): Extended;

Exemplo 1

var
  stringValue : string;
  floatValue  : Extended;

begin
  stringValue := '123.456E+002';

  floatValue  := StrToFloat(stringValue);

  sMensagem := stringValue+' = '+FloatToStr(floatValue);
end;

Exemplo 2

var
  A : Extended;

begin
  try
    A := StrToFloat('10 E 2');    // Middle blanks are not supported
  except
    sMensagem := 'Erro de conversão';
  end;

  try
   A := StrToFloat('$FF');    // Hexadecimal values are not supported
   except
    sMensagem := 'Erro de conversão';
  end;
end;

StrToInt


Converter uma string de número inteiro num valor inteiro.

Sintaxe

StrToInt(IntegerString: string): Integer;

Exemplo

var
  A, B, C, D, E, F : Integer;

begin
  A := 32;
  B := StrToInt('100');
  C := StrToInt('  -12');
  D := StrToInt('$1E');
  E := StrToInt('-0x1E');
  F := A + B + C + D + E;

  sMensagem := 'A : '+IntToStr(A);
  sMensagem := 'B : '+IntToStr(B);
  sMensagem := 'C : '+IntToStr(C);
  sMensagem := 'D : '+IntToStr(D);
  sMensagem := 'E : '+IntToStr(E);
  sMensagem := 'F : '+IntToStr(F);
end;

StrToIntDef


Converte uma string em um valor inteiro com valor padrão no caso de algum problema na conversão.

Sintaxe

StrToIntDef(const IntegerString: string; Default: Integer): Integer;

Exemplo 1

var
  A, B, C, D, E, F : Integer;

begin
  A := 32;
  B := StrToIntDef('100', 0);
  C := StrToIntDef('  -12', 0);
  D := StrToIntDef('$1E', 0);
  E := StrToIntDef('-0x1E', 0);
  F := A + B + C + D + E;

  sMensagem := 'A : '+IntToStr(A);
  sMensagem := 'B : '+IntToStr(B);
  sMensagem := 'C : '+IntToStr(C);
  sMensagem := 'D : '+IntToStr(D);
  sMensagem := 'E : '+IntToStr(E);
  sMensagem := 'F : '+IntToStr(F);
end;

Exemplo 2

var
  A : Integer;

begin
  A := StrToIntDef('100 ', 55);
  sMensagem := 'Value = '+IntToStr(A);

  A := StrToIntDef('$FG' , 66);
  sMensagem := 'Value = '+IntToStr(A);
end;

StrToTime


Converte uma string de hora em um valor TDateTime.

Sintaxe

StrToTime(const Time: string): TDateTime;
StrToTime(const Time: string; const FormatSettings: TFormatSettings): TDateTime;

Exemplo

var
  myTime : TDateTime;

begin
  myTime := StrToTime('3PM');
  sMensagem := '3PM      = '+TimeToStr(mytime);
  myTime := StrToTime('15');
  sMensagem := '15       = '+TimeToStr(mytime);
  myTime := StrToTime('15:03');
  sMensagem := '15:03    = '+TimeToStr(mytime);
  myTime := StrToTime('15:03:45');
  sMensagem := '15:03:45 = '+TimeToStr(mytime);
end;

Time


Retorna a hora atual.

Sintaxe

Time: TDateTime;

Exemplo

var
  today : TDateTime;
begin
  today := Time;
  ShowMessage('today has date = '+DateToStr(today));
  ShowMessage('today has time = '+TimeToStr(today));
end;

TimeToStr


Converte um valor de tempo TDateTime para uma string.

Sintaxe

TimeToStr(Time: TDateTime): string;
TimeToStr(Time: TDateTime; const FormatSettings: TFormatSettings): string;

Exemplo

var
  myTime : TDateTime;

begin
  myTime := StrToTime('15:22:35');
  sMensagem := 'myTime = '+TimeToStr(myTime);
end;

Trim


Remove os espaços em branco iniciais e finais de uma string.

Sintaxe

Trim(const Text: String): String;
Trim(const Text: WideString): WideString;

Exemplo

const
  PaddedString = '  Letters     ';
begin
  sMensagem := '[' + TrimLeft(PaddedString)  + ']';
  sMensagem := '[' + TrimRight(PaddedString) + ']';
  sMensagem := '[' + Trim(PaddedString)      + ']';
end;

TrimLeft


Remove espaços em branco à esquerda de uma string.

Sintaxe

TrimLeft(const Text: String): String;
TrimLeft(const Text: WideString): WideString;

Exemplo

const
  PaddedString = '  Letters     ';
begin
  sMensagem := '[' + TrimLeft(PaddedString)  + ']';
  sMensagem := '[' + TrimRight(PaddedString) + ']';
  sMensagem := '[' + Trim(PaddedString)      + ']';
end;

TrimRight


Remove espaços em branco finais de uma string.

Sintaxe

TrimRight(const Text: String): String;
TrimRight(const Text: WideString): WideString;

Exemplo

const
  PaddedString = '  Letters     ';
begin
  sMensagem := '[' + TrimLeft(PaddedString)  + ']';
  sMensagem := '[' + TrimRight(PaddedString) + ']';
  sMensagem := '[' + Trim(PaddedString)      + ']';
end;

Trunc


Retorna a parte inteira de um número de ponto flutuante.

Sintaxe

Trunc(const Number: Extended): Integer;

Exemplo

begin
  sMensagem := 'Round(12.75) = '+IntToStr(Round(12.75));
  sMensagem := 'Trunc(12.75) = '+IntToStr(Trunc(12.75));
  sMensagem := ' Int(12.75) = '+FloatToStr(Int(12.75));
  sMensagem := 'Frac(12.75) = '+FloatToStr(Frac(12.75));
end;

UpperCase


Substituir os caracteres minúsculos em maiúsculos em uma string.

Sintaxe

UpperCase(const MixedString: string): string;

FIXME

Exemplo

VarArrayCreate


FIXME

Sintaxe

Exemplo

VarArrayHighBound


FIXME

Sintaxe

Exemplo

VarArrayLowBound


FIXME

Sintaxe

Exemplo

VarIsNull


FIXME

Sintaxe

Exemplo

VarToStr


FIXME

Sintaxe

Exemplo

Write


Gravar dados em um arquivo de texto ou binário.

Sintaxe

Write(Expression1 {options} {, Expression2 {options} ...} );
Write(var FileHandle: TextFile; Expression1 {options} {, Expression2 {options} ...} );
Write(var FileHandle: File; var Value1 {,var Value2 ...} );

Exemplo 1

var
  myFile : TextFile;
  text   : string;
  i      : Integer;

begin
  AssignFile(myFile, 'Test.txt');
  ReWrite(myFile);

  Write(myFile, 'Hello ');
  Write(myFile, 'World');

  WriteLn(myFile);

  for i := 2 to 4 do
    Write(myFile, i/2, '  ');

 WriteLn(myFile);

  for i := 2 to 4 do
    Write(myFile, i/2:5:1);

  WriteLn(myFile);

  CloseFile(myFile);

  Reset(myFile);

  while not Eof(myFile) do
  begin
    ReadLn(myFile, text);
    sMensagem := text;
  end;

  CloseFile(myFile);
end;

Exemplo 2

type
  TCustomer = record
    name : string[20];
    age  : Integer;
    male : Boolean;
  end;

var
  myFile   : File of TCustomer;
  customer : TCustomer;

begin
  AssignFile(myFile, 'Test.cus');
  ReWrite(myFile);

  customer.name := 'Fred Bloggs';
  customer.age  := 21;
  customer.male := true;
  Write(myFile, customer);

  customer.name := 'Jane Turner';
  customer.age  := 45;
  customer.male := false;
  Write(myFile, customer);

  CloseFile(myFile);

  FileMode := fmOpenRead;
  Reset(myFile);

  while not Eof(myFile) do
  begin
    Read(myFile, customer);
    if customer.male
    then sMensagem := 'Man with name '+customer.name+
                      ' is '+IntToStr(customer.age)
    else sMensagem := 'Lady with name '+customer.name+
                      ' is '+IntToStr(customer.age);
  end;

  CloseFile(myFile);
end;

Exemplo 3

var
  myWord, myWord1, myWord2 : Word;
  myFile : File of Word;

begin
  AssignFile(myFile, 'Test.bin');
  ReWrite(myFile);

  myWord1 := 234;
  myWord2 := 567;
  Write(myFile, myWord1, myWord2);

  CloseFile(myFile);

  FileMode := fmOpenRead;
  Reset(myFile);

  while not Eof(myFile) do
  begin
    Read(myFile, myWord);
    sMensagem := IntToStr(myWord);
  end;

  CloseFile(myFile);
end;

WriteLn


Escrever uma linha completa de dados para um arquivo de texto.

Sintaxe

WriteLn(Expression1 {options} {, Expression2 {options} ...} );
WriteLn(var FileHandle : TextFile; Expression1 {options} {, Expression2 {options} ...} );

Exemplo

var
  myFile : TextFile;
  text   : string;

begin
  AssignFile(myFile, 'Test.txt');
  ReWrite(myFile);

  WriteLn(myFile, 'Hello World');

  WriteLn(myFile);

  WriteLn(myFile, '22/7 = ' , 22/7);

  WriteLn(myFile, '22/7 = ' , 22/7:12:6);

  CloseFile(myFile);

  Reset(myFile);

  while not Eof(myFile) do
  begin
    ReadLn(myFile, text);
    sMensagem := text;
  end;

  CloseFile(myFile);
end;

Biblioteca de Classes


Este tópico descreve e exemplifica o uso de classes utilizadas pelo WFS.

HTTP/REST via script


Exemplo 1: Testes de envio (SLACK) para uma pessoa especifica passando o nome de outras pessoa no username;

var
  http: TWHTTP;
  response: THTTResponse;
  jsonObject: TJsonObject; 
  token, channel, text, username: String;
  
begin
           
  try
    try
      // Criando a conexão 
      http := TWHTTP.create();
      // Parâmetros necessários para o método GET.
      token := http.encodeParameter( 'xoxb-179556611860-ZhO1pl49DXlJOmbDp6nKU9jd' );
      channel := http.encodeParameter( '@juliano.rafael' );
      text := http.encodeParameter( 'Teste de *integração*' );
      username := http.encodeParameter( '@juliano.rafael' ); 
      // Precisa de SSL.
      http.setSSL( true );
      response :=  http.doGet( 'https://slack.com/api/chat.postMessage?token=' + token + '&channel=' + channel + '&text=' + text + '&username=' + username );
      jsonObject := response.GetResponseJson(response.GetResponseString());
    except
      showMessage( 'ocorreu erro' );  
    end;  
  finally
    http.Free();
    response.Free();
  end;
                          
end;                       

Exemplo 2: Teste de envio para um canal se passando por um usuário;

var
  http: TWHTTP;
  response: THTTResponse;
  jsonObject: TJsonObject; 
  token, channel, text, username: String;
  
begin
           
  try
    try
      // Criando a conexão 
      http := TWHTTP.create();
      // Parâmetros necessários para o método GET.
      token := http.encodeParameter( 'xoxb-179556611860-ZhO1pl49DXlJOmbDp6nKU9jd' );
      channel := http.encodeParameter( 'channel' );
      text := http.encodeParameter( 'Teste de *integração*' );
      username := http.encodeParameter( '@juliano.rafael' ); 
      // Precisa de SSL.
      http.setSSL( true );
      response :=  http.doGet( 'https://slack.com/api/chat.postMessage?token=' + token + '&channel=' + channel + '&text=' + text + '&username=' + username );
      // Convertendo o retorno em JsonObject.
      jsonObject := response.GetResponseJson(response.GetResponseString());
    except
      showMessage( 'ocorreu erro' );  
    end;  
  finally
    http.Free();
    response.Free();
  end;
                          
end;                       

Exemplo 3: Carregando lista de usuários do Slack;

var
  http: TWHTTP;
  response: THTTResponse;
  jsonObject: TJsonObject; 
  jsonPair: TJSonPair;
  jsonArray: TJsonArray;
  token, url: String;
  i: Integer;     
  
begin              
           
  try
    try
      // Criando a conexão 
      http := TWHTTP.create();
      // Parâmetros necessários para o método GET.
      token := http.encodeParameter( 'xoxb-179556611860-ZhO1pl49DXlJOmbDp6nKU9jd' );
      // Precisa de SSL.
      http.setSSL( true );   
      url := 'https://slack.com/api/users.list?token=' + token; 
      response :=  http.doGet( url );
      // Convertendo o retorno em JsonObject.
      jsonObject := response.GetResponseJson(response.GetResponseString());
      jsonPair := response.getByName( jsonObject, 'members' );
      jsonArray := jsonPair.jsonValue;
      for i := 0 to jsonArray.size - 1 do
      begin 
        showMessage( TJsonObject( jsonArray.get(i) ).get(2).jsonValue.value );
      end;                            
      
    except
      showMessage( 'ocorreu erro' );  
    end;  
  finally
    http.Free();
    response.Free();
  end;
                          
end;   

Exemplo 4: Inserindo Issue no Jira via basic authentication;

var
  http: TWHTTP;
  response: THTTResponse;
  jsonObject: TJsonObject; 
  url, paramJson: String;
  
begin              
           
  try
    try
      // Criando a conexão 
      http := TWHTTP.create();
      // Neste caso necessario autenticação básica
      http.setBasicAuthentication( true );
      http.setUser( 'board-jira@rh3software.com' );
      http.setPassWord( 'Rh3@1593576482' );
      // Será passado um Json.
      http.setContentType( 'application/json' );
      // Default charset.
      http.setCharset( 'utf-8' );
      // Precisa de SSL.
      http.setSSL( true );
      // Json em forma de string para ser passado como data para o doPost.
      paramJson := '{
                    "fields": {
                    "project":                                     
                           {   
                              "key": "RH3"
                           },
                    "summary": "Segundo testes da API.",
                    "description": "Creating of an issue using project keys and issue type names using the REST API",
                    "issuetype": {      
                        "name": "Bug"                 
                       }                   
                   }
                }';                  
      // URL 
      url := 'https://rh3software.atlassian.net/rest/api/2/issue'; 
      // Response do doPost
      response :=  http.doPost( url, paramJson );                        
      // Convertendo o retorno em JsonObject.
      jsonObject := response.GetResponseJson(response.GetResponseString()); 
      // Pegando o objeto retornado para mostrar a chave que foi incluída.
      showMessage( response.getByName( jsonObject, 'key' ).jsonValue.value );
      
     except
        showMessage( 'ocorreu erro' );  
     end;  
  finally
    http.Free();
    response.Free();
  end;
                  
end;                                                                   

Exemplo 5: Retornando um statuscode >= 400 da api.

var
  http: TWHTTP;
  response: THTTResponse;
  jsonObject: TJsonObject; 
  url, paramJson: String;
  
begin              
           
  try
    try
      // Criando a conexão 
      http := TWHTTP.create();
      // Neste caso necessario autenticação básica
      http.setBasicAuthentication( true );
      http.setUser( 'board-jira@rh3software.com' );
      http.setPassWord( 'Rh3@1593576482' );
      // Será passado um Json.
      http.setContentType( 'application/json' );
      // Default charset.                                         
      http.setCharset( 'utf-8' );        
      // Precisa de SSL.
      http.setSSL( true );
      // Json em forma de string para ser passado como data para o doPost.
      paramJson := '{
                    "fields": {
                    "project":                                     
                           {   
                              "key": "fdsafdas"
                           },
                    "summary": "REST ye merry gentlemen.",
                    "description": "Creating of an issue using project keys and issue type names using the REST API",
                    "issuetype": {                 
                        "name": "Bug"                 
                       }                   
                   }
                }';                  
      // URL 
      url := 'https://rh3software.atlassian.net/rest/api/2/issue'; 
      // Response do doPost
      response :=  http.doPost( url, paramJson );                        
      // Convertendo o retorno em JsonObject.
      jsonObject := response.GetResponseJson(response.GetResponseString()); 
      // Pegando o objeto retornado porem o statuscode > 400
      if response.getStatusCode() >= 400 then
        showMessage( TJsonObject( response.getByName( jsonObject, 'errors' ).jsonValue ).get(0).jsonValue.value );
      
     except
        showMessage( 'ocorreu erro' );  
     end;  
  finally
    http.Free();
    response.Free();
  end;
                  
end;