Tabela de conteúdos
<fs x-large>Workflow Studio \ Fluxo</fs>
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:
- Ler dados da definição do fluxo;
- Ler/alterar variáveis do fluxo;
- Ler/gravar dados num banco de dados;
- Acessar webservices;
- Criar/alterar arquivos no sistema de diretórios;
- Enviar emails.
### 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
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: ###
“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;
- conexao: Variável que guardará a conexão e que deverá ser usada para configurar os componentes de acesso a banco de dados(TADOQueryEx);
- connectionString: Propriedade da variável de conexão responsável por configurar o exato acesso a um usuário de banco de dados;
- Password: Senha do usuário de banco de dados;
- ID: Login do usuário de banco de dados;
- wfs: Alias que informa qual o banco de dados a ser usado.
- loginprompt: Fica definido como “false” para que não seja exibida uma tela de confirmação para o usuário sempre que a conexão for efetuada;
- connected: Passando o valor “True” efetua a conexão. “False” finaliza uma conexão aberta.
Consulta ao banco de dados
Abaixo segue o exemplo de como efetuar uma consulta de banco de dados:
“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;
- query: Variável de acesso ao banco de dados;
- connection: Propriedade responsável para apontar para uma conexão existente a um usuário de banco de dados;
- setSql: Propriedade onde será informado o comando SQL para acessar as informações do banco;
- active: O valor “True” executa a consulta. O valor “False” finaliza a consulta.
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
“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
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
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
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
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
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
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.
- 1 = Sunday;
- 2 = Monday;
- 3 = Tuesday;
- 4 = Wednesday;
- 5 = Thursday;
- 6 = Friday;
- 7 = Saturday.
Sintaxe
DayOfWeek(Date: TDateTime): Integer;
Exemplo
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
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.
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;);
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;
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;
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
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);
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;
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 (*)
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
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;
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.
Sintaxe
LowerCase(const MixedString: string ): string;
Exemplo
Machine (*)
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;
Exemplo
Raise
Levantar uma exceção.
Sintaxe
Raise Raise Object reference Raise Object reference At Address pointer
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;
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...} ) ;
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);
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 );
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 (*)
Sintaxe
Exemplo
SetOf (*)
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);
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;
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;
Exemplo
VarArrayCreate
Sintaxe
Exemplo
VarArrayHighBound
Sintaxe
Exemplo
VarArrayLowBound
Sintaxe
Exemplo
VarIsNull
Sintaxe
Exemplo
VarToStr
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;

