Ajuda com erro simples delphi

Estou fazendo o curso do neri e tem dois erros. Cismou com “Text”.

unit UMenuPrincipal;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus, Vcl.StdCtrls, Vcl.ExtCtrls,
Vcl.ComCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
BarradeStatus: TStatusBar;
Panel1: TPanel;
Button1: TButton;
Button2: TButton;
MainMenu1: TMainMenu;
Cadastro1: TMenuItem;
Consultas1: TMenuItem;
Clientes1: TMenuItem;
TimerDataHora: TTimer;
procedure TimerDataHoraTimer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.TimerDataHoraTimer(Sender: TObject);
begin
BarradeStatus.Panels(1).Text := 'Data.: ’ +datetostr(date);
BarradeStatus.Panels(2).Text := 'Time.: ’ +timetostr(time);
end;

end.

Mensagens do compilador:

Checking project dependencies…
Compiling Project1.dproj (Debug, Win32)
dcc32 command line for “Project1.dpr”
e:\app\bin\dcc32.exe -$O- -$W+ --no-config -M -Q -TX.exe -AGenerics.Collections=System.Generics.Collections;
Generics.Defaults=System.Generics.Defaults;WinTypes=Winapi.Windows;WinProcs=Winapi.Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE -DDEBUG
-E.\Win32\Debug -Ie:\app\lib\Win32\debug;e:\app\lib\Win32\release;C:\Users\luiz_\Documents\Embarcadero\Studio\20.0\Imports;e:\app\Imports;
C:\Users\Public\Documents\Embarcadero\Studio\20.0\Dcp;e:\app\include -LEC:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl
-LNC:\Users\Public\Documents\Embarcadero\Studio\20.0\Dcp -NU.\Win32\Debug -NSWinapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;
System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell; -Oe:\app\lib\Win32\release;
C:\Users\luiz_\Documents\Embarcadero\Studio\20.0\Imports;e:\app\Imports;C:\Users\Public\Documents\Embarcadero\Studio\20.0\Dcp;e:\app\include
-Re:\app\lib\Win32\release;C:\Users\luiz_\Documents\Embarcadero\Studio\20.0\Imports;e:\app\Imports;
C:\Users\Public\Documents\Embarcadero\Studio\20.0\Dcp;e:\app\include -Ue:\app\lib\Win32\debug;e:\app\lib\Win32\release;
C:\Users\luiz_\Documents\Embarcadero\Studio\20.0\Imports;e:\app\Imports;C:\Users\Public\Documents\Embarcadero\Studio\20.0\Dcp;e:\app\include -V -VN
-NBC:\Users\Public\Documents\Embarcadero\Studio\20.0\Dcp -NHC:\Users\Public\Documents\Embarcadero\Studio\20.0\hpp\Win32 -NO.\Win32\Debug
Project1.dpr
[dcc32 Error] UMenuPrincipal.pas(38): E2066 Missing operator or semicolon
[dcc32 Error] UMenuPrincipal.pas(39): E2066 Missing operator or semicolon
[dcc32 Fatal Error] Project1.dpr(5): F2063 Could not compile used unit ‘UMenuPrincipal.pas’
Failed
Elapsed time: 00:00:00.8

Sou iniciante.

Valeu.

A propriedade Panels do StatusBar é uma lista, portanto, para acessar seus elementos, use chaves ([ e ] ). No seu código, ficaria algo assim:

procedure TForm1.TimerDataHoraTimer(Sender: TObject);
begin
BarradeStatus.Panels[1].Text := 'Data.: ' +datetostr(date); // mudou aqui
BarradeStatus.Panels[2].Text := 'Time.: ' +timetostr(time); // e aqui;
end;

Abraço.

1 curtida

Amigão, resolveu. Mas quando eu executo tá abrindo um monte de janelinhas informando erro de acesso. Só para com o gerenciador de tarefas. Você tem alguma ideia do que pode ser?

Valeu.

Erro de acesso não. violação. Valeu!

Acredito que você quer dizer “Access Violation”. Recomendo se acostumar a usar os termos em inglês, pois vai facilitar suas buscas.

Esse problema geralmente ocorre quando você tenta acessar um objeto ou variável que não existe. Meu palpite, baseado no seu código (se esse é todo o seu código), é que seu objeto BarradeStatus ainda não está criado quando o método TimerDataHoraTimer é chamado, então a linha BarradeStatus.Panels causa esse erro.

Para tentar descobrir se é aí, comente as duas linhas que você adicionou no método TimerDataHoraTimer e execute novamente o programa. Se não der erro, você sabe que o problema é aí.

Complementando, verifique qual o tempo que você colocou no objeto Timer (na propriedade Interval). Não recomendo deixar um tempo muito baixo. Lembrando que esse intervalo é em milissegundos, então 1000 é 1 segundo, 2000 são 2 segundos e assim por diante.

Abraço.

Foi isso mesmo que você falou. Executou. Eternamente grato pela ajuda. São de pessoas como você que esse mundo mais precisa. Vou continuar avançando no curso. Valeu!:smiley: