2010-09-20 59 views
0

嗨我創建了一個名爲Tperson的自定義類。我想將它轉換爲一個字符串,所以我可以將它保存到一個數組(Tperson類型)並顯示在一個字符串網格中。自定義類到字符串

unit Unit2; 

interface 

uses 
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
    Dialogs; 

type 
    TPerson = class(Tobject) 
    public 
    Fname : string; 
    Fage : integer; 
    Fweight : integer; 
    FHeight : integer; 
    FBMI : real; 

    function GetBMI(Fweight,Fheight:integer) : real; 
    procedure create(Fname:String;fage,fweight,fheight:integer);overload; 
    procedure Persontostr(Fname:string;Fage,Fheigth,Fweight:integer;FBMI:real);overload; 
    end; 

implementation 

{ TPerson } 



procedure TPerson.create(Fname: String; fage, fweight, fheight: integer); 
begin 
    Fname := ''; 
    Fage := 0; 
    Fweight := 0; 
    FHeight := 0; 
    FBMI := 0; 
end; 

function TPerson.GetBMI(Fweight, Fheight: integer): real; 
begin 
    result := (Fweight/Fheight) * (Fweight/Fheight); 
end; 

procedure TPerson.Persontostr(Fname:string;Fage,Fheigth,Fweight:integer;FBMI:real); 
begin 

end; 

end. 
+0

你能解釋「將其轉換爲字符串,所以我可以將其保存到一個數組(Tperson類型)」嗎?作爲一項要求,這並不合理。不需要將其轉換爲字符串以將該對象添加到數組中,而是可以將其添加到TPerson的數組(或TList)中。在字符串表格中顯示可以從TPerson對象本身提取字符串或值,並將其轉換爲字符串。 – 2010-09-21 01:46:19

+0

在Delphi中,你在構造函數中所做的事情是完全不需要的,因爲對象的內存在構造時被零填充,並且它意味着所有數字字段將爲0,字符串字段將爲空字符串,指針字段將爲零,自動。另一方面,你應該做的是調用繼承的Create構造函數來正確初始化該對象;只需添加下面這行:inherited Create; – jachguate 2010-09-22 00:33:45

回答

3

要將哪些字段轉換爲字符串?

如果所有的,那麼你可以這樣做:

function TPerson.ToString: string; 
begin 
    Result := Format('%s, %d years, %d kg, %d cm, BMI: %.f', [FName, FAge, FWeight, FHeight, FBMI]); 
end; 

你想用的程序Persontostr什麼。它看起來像一個setter程序給我。雖然這個名字暗示了其他功能。

此外,你應該讓你的領域是私人的。所以你可以添加屬性。體重指數應只讀:

type 
    TPerson = class(Tobject) 
    private 
    // Object fields, hidden from outside. 
    FName : string; 
    FAge : integer; 
    FWeight : integer; 
    FHeight : integer; 

    // Getter function for calculated fields. 
    function GetBMI: Real; // Calculates BMI. 
    public 
    // Constructor, used to initialise the class 
    constructor Create(const AName: string; const AAge,AWeight, AHeight: integer); 

    // Properties used to control access to the fields. 
    property Name: string read FName; 
    property Age: Integer read FAge; 
    property Weight: Integer read FWeight; 
    property Height: Integer read FHeight; 
    property BMI: Real read GetBMI; 
    end; 
+0

我在學校的水平,所以格式不重要,但我明白。感謝您的幫助 。 – DarkestLyrics 2010-09-20 08:53:14

+5

學校層面是你應該學會做正確的事情:) – 2010-09-21 01:45:32