Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.18;
Скачать: CL | DM;

Вниз

Что-то не понятное...(для меня)   Найти похожие ветки 

 
Новенкий в Делфи   (2002-11-08 05:51) [0]

При нажатии на кнопку, расширяю массив:

Type RFonEl = record
Allias:string;
F: TFont;
end;

var FonEl: array of RFonEL;

...
procedure TForm1.btNewFonClick(Sender: TObject);
var n:integer;
begin
if FD1.Execute then
begin
SetLength(FonEl,Length(FonEl)+1);
n:= High(FonEl);
lbFont.Items.Add("Font Element "+IntToStr(n));
FonEl[n].Allias:="Font Element "+IntToStr(n);
FonEl[n].F:=FD1.Font;
end;
end;

После чего, во всех F этого массива, становится одинаковое значение, то которое ьыло выбранно последний раз.

Как так получается и как с этим бороться


 
Николай Быков ©   (2002-11-08 06:12) [1]

Так..... Либо объясни что здесь означают эти переменные, либо приводи пример со стандартными именами (Form1, OpenDialog1, Button1 и т.д.)
И что ты хочешь сделать. Я, например, когда отвечаю на вопрос с просбюой найти баг в исхожниках, засовываю текст в Дельфи и мне нужно это дело со стандартныи именами.


 
VaS ©   (2002-11-08 08:50) [2]

Поле твоей записи F: TFont - объект. Его нужно создавать вызовом конструктора F:=TFont.Create. Поэтому динамические массив для хранения твоих записей не подходит. Используй TStringList, TList, TObjectList например, выделяя помять под записи с помощью New, освобождая с помощью Dispose, и не забывая про F.


 
Николай Быков ©   (2002-11-08 08:57) [3]


> массив для хранения твоих записей не подходит

Да ну? У меня программа на это основанна и все прекрасно работает!


 
mmb ©   (2002-11-08 10:20) [4]

Может быть надо так делать
FonEl[n].F.Assign(FD1.Font);


 
Юрий   (2002-11-08 10:33) [5]

> массив для хранения твоих записей не подходит

Здесь, наверное, имелось ввиду: "Записи для хранения объектов не подходят"
Ведь на самом деле в записи хранится не сам объект, а только указатель на него. Можно конечно попытаться вывернуться через:
Type RFonEl = record
Allias:string;
F: string[SizeOf(TFont)];
end;
Затем любым способом запихиваем в RFonEl.F готовый объект, а вытаскиваем типа:
MyFont:=@RFonEl.F или (@RFonEl.F as TFont) или на подобии того. Сам не пробовал, но по идее можно выкрутиться.


 
Alex44   (2002-11-08 11:06) [6]

Vo vseh zapisyah hranitsya SSYLKA na FD.Font, t.e., odin i tot zhe object. Nuzhno:


FonEl[n].F:=TFont.Create;
FonEl[n].F.Assign(FD1.Font);


I ne zabyvat" FontEl[n].F.Free !


 
MegaBass ©   (2002-11-08 11:19) [7]

Alex44 прав в отличии от Николай Быков


 
Новенький в Делфи   (2002-11-08 17:39) [8]

Всех благодарю!



Страницы: 1 вся ветка

Текущий архив: 2002.11.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
14-59332
DiamondShark
2002-10-31 17:08
2002.11.18
Да здравствуют наши программисты!


3-59061
MsGuns
2002-10-28 15:50
2002.11.18
Заставить грид листать страницами или сообщения Windows


4-59506
Василий2
2002-10-08 15:19
2002.11.18
ВОПРОС МАСТЕРАМ ДЕЛЬФИ: КАК WINAMP РАБОТАЕТ СО СКИНАМИ???


3-58983
Sergey_Elf
2002-10-28 09:19
2002.11.18
quick report - как сделать такую штуку


7-59451
Polevi
2002-09-18 19:09
2002.11.18
Интересная проблемка..