Fórum Problemas com a função LeftBStr #262505

17/12/2004

0

Caros amigos,

tenho a seguinte função do Delphi:

LeftBStr(texto: AnsiString; numero: Integer): AnsiString;
begin
end;

Ao ler um arquivo texto com Readln obtenho a seguinte linha:
00001|12122|PAULO SERGIO DE OLIVEIRA|00000|0099
Este valor estou armazenando na variável s.

Se tento usar a seguinte instrução:
if LeftBStr(s, 5) = ´00001´ then
label1.caption := s

não é mostrado nada no label.

Alguém tem uma idéia do que pode ser?

Obrigado pela atenção de todos.


Jorgeolimpia

Jorgeolimpia

Responder

Posts

17/12/2004

Massuda

tenho a seguinte função do Delphi: LeftBStr(texto: AnsiString; numero: Integer): AnsiString; begin end; [...]Se tento usar a seguinte instrução: if LeftBStr(s, 5) = ´00001´ then label1.caption := s não é mostrado nada no label.
Sua função LeftBStr não está implementada ou você omitiu a implementação quando postou aqui?

Se não estiver implementada então está funcionando corretamente: como está retorna uma string vazia e o caption do label nunca vai receber o valor da string s.


Responder

Gostei + 0

17/12/2004

Jorgeolimpia

Caro Massuda,
o código completo é este:

implementation

{$R *.dfm}

function LeftBStr(line: AnsiString; number: Integer): AnsiString;
begin
end;

procedure TForm1.Button1Click(Sender: TObject);
var
t1: TextFile;
s: string;
begin
if opendialog1.Execute then
begin
AssignFile(t1, opendialog1.FileName);
Reset(t1);
while not eof(t1) do
begin
Readln(t1, s);
if LeftBStr(s,5) = ´00001´ then
label1.Caption := s
end;
end;
end;

end.

Desta maneira não deveria dar certo?

Obrigado pela atenção.

[quote:b7b95ae351=´jorgeolimpia´]tenho a seguinte função do Delphi: LeftBStr(texto: AnsiString; numero: Integer): AnsiString; begin end; [...]Se tento usar a seguinte instrução: if LeftBStr(s, 5) = ´00001´ then label1.caption := s não é mostrado nada no label.
Sua função LeftBStr não está implementada ou você omitiu a implementação quando postou aqui?

Se não estiver implementada então está funcionando corretamente: como está retorna uma string vazia e o caption do label nunca vai receber o valor da string s.[/quote:b7b95ae351]


Responder

Gostei + 0

17/12/2004

Gandalf.nho

Sua função não está implementada (não há nada dentro do bloco Begin.. end), então não há como retornar algo.


Responder

Gostei + 0

17/12/2004

Massuda

o código completo é este:
implementation

{$R *.dfm}

function LeftBStr(line: AnsiString; number: Integer): AnsiString;
begin
end;

procedure TForm1.Button1Click(Sender: TObject); 
// resto da unit omitida


A função LeftBStr está definida na unit StrUtils, você não precisa declarar uma função LeftBStr na sua unit. Mude seu código para:
implementation

{$R *.dfm}

uses
  StrUtils;

procedure TForm1.Button1Click(Sender: TObject); 
// resto da unit omitida
No futuro, quando for usar uma função do Delphi, basta incluir a respectiva unit na lista de [b:271ae67750]uses[/b:271ae67750] da sua unit.


Responder

Gostei + 0

17/12/2004

Massuda

A função LeftBStr está definida na unit StrUtils, você não precisa declarar uma função LeftBStr na sua unit.
Mais um detalhe... meu comentário vale apenas se você estiver usando Delphi 7 ou mais recente. Se estiver usando Delphi 6 ou mais antigo, implemente a função LeftBStr assim:
function LeftBStr(line: AnsiString; number: Integer): AnsiString; 
begin 
  Result := Copy(line, 1, number);
end; 
Não é exatamente o que LeftBStr faz, mas serve neste caso.


Responder

Gostei + 0

17/12/2004

Jorgeolimpia

Caro Massuda,

realmente a sua dica está certa.
Eu não sabia que não era necessário criar a função, já que ela existe dentro do Delphi.
Agradeço muito a sua ajuda.

Abraços...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar