Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Chris Miller on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

How do I use a string Var as a Caption

Status
Not open for further replies.

lloydie2

Programmer
Apr 21, 2003
75
GB
I have been going throgh the throes of teaching myself Classes only to be beaten at the last hurdle. The class Employee name is a String type, but I wish to place the data in a listbox as an item. I now there is a way make the class a caption, but how?
This is the code:
------------------------------------------
procedure TForm1.AddEmployClick(Sender: TObject);
var emp: Temployee;
var Employnewitem: TListItem;
begin
if financebutton.Checked then
emp := FinEmployee.create(EmployName.Text, strtoint(employsal.Text));
Employnewitem:= EmployView.Items.Add;
Employnewitem.Caption := (emp.name)
//Employnewitem.ImageIndex := 0

else

emp := salesEmployee.create(EmployName.Text, strtoint(employsal.Text), 10);
Employnewitem:= EmployView.Items.Add;
Employnewitem.Caption := (emp.name);
//Employnewitem.ImageIndex := 1;
end;
-----------------------------------------------
Here is the error:
----------------------------------------------
[Warning] Unit1.pas(50): Variable 'emp' might not have been initialized
[Error] Unit1.pas(53): 'END' expected but 'ELSE' found
[Fatal Error] Project1.dpr(8): Could not compile used unit 'Unit1.pas'
--------------------------------------------------
 
The error is being triggered because you have multiple statements between the else and end that are not wrapped with BEGIN..END blocks. Consider:

Code:
procedure TForm1.AddEmployClick(Sender: TObject);
var emp: Temployee;
    Employnewitem: TListItem;
begin
  if financebutton.Checked then
  begin
     emp := FinEmployee.create(EmployName.Text, strtoint(employsal.Text));
     Employnewitem:= EmployView.Items.Add;
     Employnewitem.Caption := (emp.name)
     //Employnewitem.ImageIndex := 0
  end
else
  begin
    emp := salesEmployee.create(EmployName.Text, strtoint(employsal.Text), 10);
    Employnewitem:= EmployView.Items.Add;
    Employnewitem.Caption := (emp.name);
    //Employnewitem.ImageIndex := 1;
  end;
end;

In addition, take a moment to consider this alternate approach, which seems a bit cleaner to me:

Code:
procedure TForm1.AddEmployClick(Sender: TObject);
var emp: Temployee;
    Employnewitem: TListItem;
begin

  if financebutton.Checked then
     emp := FinEmployee.create(EmployName.Text, strtoint(employsal.Text));
  else
     emp := salesEmployee.create(EmployName.Text, strtoint(employsal.Text), 10);

  Employnewitem:= EmployView.Items.Add;
  Employnewitem.Caption := (emp.name)
  //Employnewitem.ImageIndex := 0

end;

Your mileage may vary. Hope this helps...

-- Lance
 
FootPad,
Thanks for your help. All is fine for now. I have stuck to the original format of my code, but if you can improve on it please let me know.
working code:
--------------------------------------------
procedure TForm1.AddEmployClick(Sender: TObject);
var emp: Temployee;
var Employnewitem: TListItem;
begin
if financebutton.Checked then
begin
emp := FinEmployee.create(EmployName.Text, strtoint(employsal.Text));
Employnewitem:= EmployView.Items.Add;
Employnewitem.Caption := (emp.name);
Employnewitem.ImageIndex := 0
end

else
begin
emp := salesEmployee.create(EmployName.Text, strtoint(employsal.Text), 10);
Employnewitem:= EmployView.Items.Add;
Employnewitem.Caption := (emp.name);
Employnewitem.ImageIndex := 1;
end;
end;
--------------------------------------------
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top