[DUG] O.o hmmm ok
Nick
nick at salehoo.com
Thu Jun 7 14:01:50 NZST 2007
Right that makes sense :-)
So you could use a pointer then?
example
type
TMyRec = Record
name : string;
end;
var
a : TMyRec;
b : ^TMyRec;
begin
a.name := 'Bob';
b := @a;
b.name := 'Smile';
showmessage(a.name); //shows Smile
Judd, Struan (eCargo) wrote:
> Records are constructs with Value semantics whereas Objects have
> Reference semantics.
>
> This means that in the following code is the Assignment 1 and Assignment
> 2 are semantically identical:
>
> Var a, b: record
> name: String;
> age: Integer;
> end;
>
> Begin
> a.name := 'Me';
> a.age := 39;
>
> // Assignment 1
> b := a;
>
> // Assignment 2
> b.name := a.name;
> b.age := a.age;
> End;
>
> TTFN, Struan.
>
> Nick wrote:
>
>> Got something weird here - weird because I probably don't understand
>> it properly but it caused me a bit of delay... Simplified, I had a
>> global array of records, during my procedure I would do something
>> like this
>>
>> PRec := MyArrayofPRec[0];
>> PRec.name := 'Hi';
>>
>> Now for some reason I was expecting MyArrayOfPRec[0].name to be now
>> 'Hi'
>> as well, but it's not.
>>
>> Here is an example that I whipped up just now which lead me to expect
>> this.
>>
>> type
>> TMyRec = Record
>> name : string;
>> end;
>>
>>
>> var
>> Form1: TForm1;
>> TTH : TMyRec;
>>
>> procedure TForm1.FormCreate(Sender: TObject); begin
>> TTH.name := 'BoB';
>> end;
>>
>> procedure TForm1.Button1Click(Sender: TObject); var
>> t : TMemo;
>> b : TMyRec;
>> begin
>> t := Memo1;
>> t.lines.add('hi');
>>
>> b := TTH;
>> b.name := 'Smile';
>> t.lines.add(TTH.name);
>> end;
>>
>> Now in this example when it's ran and button 1 is clicked - Hi is
>> added to the Memo1 and Bob is added.
>> So why can I assign Memo1 to T and all actions done to T are done to
>> Memo1, but the same isn't with the Record.
>> Is it because Record isn't from TObject?
>> I guess it's like
>> var
>> a,b : integer;
>> begin
>> a := 1;
>> b := a;
>> b := 10; //a still = 1 which is what I would expect end;
>>
>> so is it because TMemo is an Object and the record and a,b above are
>> just variables?
>>
>> O.o
>> Thanks
>>
>>
>>
>> _______________________________________________
>> NZ Borland Developers Group - Delphi mailing list
>> Post: delphi at delphi.org.nz
>> Admin: http://delphi.org.nz/mailman/listinfo/delphi
>> Unsubscribe: send an email to delphi-request at delphi.org.nz with
>> Subject: unsubscribe
>>
>
> DISCLAIMER: This electronic message together with any attachments is
> confidential. If you are not the intended recipient, do not copy, disclose or
> use the contents in any way. Please also advise us by return e-mail that you
> have received the message and then please destroy. Carter Holt Harvey is not
> responsible for any changes made to this message and / or any attachments after
> sending by Carter Holt Harvey. We use virus scanning software but exclude all
> liability for viruses or anything similar in this email or any attachment.
>
> _______________________________________________
> NZ Borland Developers Group - Delphi mailing list
> Post: delphi at delphi.org.nz
> Admin: http://delphi.org.nz/mailman/listinfo/delphi
> Unsubscribe: send an email to delphi-request at delphi.org.nz with Subject: unsubscribe
>
>
More information about the Delphi
mailing list