Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.11.18;
Скачать: [xml.tar.bz2];

Вниз

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

 
Новенкий в Делфи   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.01 c
1-59230
diww
2002-11-06 16:33
2002.11.18
как определить сетевое имя диска


1-59113
_acme
2002-11-08 07:26
2002.11.18
Как можно на форме разместить текстуру. (На подобии Opera 6)


1-59139
mvg_first
2002-11-07 13:39
2002.11.18
Работа с наборами записей в трехуровневом приложении.


14-59349
Дмитрий Баранов
2002-10-29 12:13
2002.11.18
WAP


3-59013
- Andrew -
2002-10-29 13:47
2002.11.18
Как вытащить Jpeg in BLOB





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский