![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как присвоить значения одной переменной другой (TStringList) [D7, WinXP]
kyn66 © (2005-10-20 11:04:00)Уважаемые мастера, САБЖ сопсна. Есть две переменных
Var
St1, St2 : TStringList;
Begin
St1 := St2; // ???
St1.Assign(St2); // ???
end;
Как правильно? И там и там вылетает ошибка 8-(
Digitman (2005-10-21 12:23:00) [1]
> Просто таким образом сохраняю некоторые наборы данных
т.е. первое что пришло в голову ...
kyn66 (2005-10-21 12:15:00) [2]Просто таким образом сохраняю некоторые наборы данных
Digitman (2005-10-20 17:09:00) [3]
> После начинки, я храню ее в некотором файле типа Ini-файла
зачем именно в Ini-файле ?
чтобы "ручками" можно было править его в текст.редакторе ?
или тебе просто нужно сохранить где-то настройки чего-то, чтобы при новом сеансе работы приложения восстановить их ?
Digitman (2005-10-20 17:01:00) [4]
> kyn66 © (20.10.05 16:47) [21]
> А поле в записи читал какого типа?
а какая разница, поле это или не поле ?
поле типа TStringList сохраняется точно так же как отдельная переменная TStringList... т.е. сначала сохраняется значение Length(StringList.Text) и следом - собственно StringList.Text ... просто в случае с записью все это нужно последовательно проделать с каждым полем такого типа
Leonid Troyanovsky (2005-10-20 16:58:00) [5]
> kyn66 © (20.10.05 16:47) [21]
> А поле в записи читал какого типа?
- А кто ее брил? Кто брил твою противную тетку?
--
Regards, LVT
ЗЫ Зачем смешивать коней и людей.
Если поля - объекты,то сделай их объемлющее объектом.
Тогда будет у него и конструктор и деструктор и т.д.
kyn66 (2005-10-20 16:47:00) [6]>> Плохиш
А поле в записи читал какого типа?
Плохиш (2005-10-20 13:55:00) [7]
> kyn66 © (20.10.05 13:04) [17]
> [15] - это и есть работа с обычными переменными. А записи?
> Ведь у меня запись смешанного типа.
А запись - это необычная переменная?
Может книжку-какую прикупить?
kyn66 (2005-10-20 13:12:00) [8]>> Baltika-7
Есть такая штука DataFile, позволяет хранить данные любого типа. От строк до фонтов, TStrings тоже, записи. Я уже написал запрос автору, ждемс. Он всегда помогал с ответом.
Baltika-7 (2005-10-20 13:07:00) [9]
> kyn66 © (20.10.05 13:04) [17]
>
> [15] - это и есть работа с обычными переменными. А записи?
> Ведь у меня запись смешанного типа. После начинки, я храню
> ее в некотором файле типа Ini-файла. После эти данные мне
> считать. Во как.
Вот с этого и надо было начинать.
Динамически созданные объекты не стоит хранить в ini-файле, либо писать полную выгрузку/загрузку всех полей вручную.
kyn66 (2005-10-20 13:04:00) [10][15] - это и есть работа с обычными переменными. А записи? Ведь у меня запись смешанного типа. После начинки, я храню ее в некотором файле типа Ini-файла. После эти данные мне считать. Во как.
Baltika-7 (2005-10-20 13:03:00) [11]
> Проблема в том, что работая с переменными, я их предварительно
> объявляю. А как быть с полями записей. Как и когда их объявлять,
> чтобы с ними работать. Ведь изначально они Nil
Работать с ними точно так же, как и с обычными переменными.
Если тебе нужно, чтобы объект существовал, вызывай конструктор:
myRec.Field1 := TMyClass.Create;
Если ты создаешь объекты отдельно, например, так:
MyObj := TMyClass.Create; и хочешь присвойть полю в твоей записи, то просто выполняй присвоение после создания объекта:
myRec.Field1 := MyObj;
PS.
Вот только не забывай, что любые сохданные тобой объекты нужно уничтожать самому после того, как они станут не нужны, например:
myRec.Field1.Free;
myRec.Field1 := nil //это необязательно
или
FreeAndNil(myRec.Field1);
Zhekson (2005-10-20 12:53:00) [12]Ты знаешь, нормального ответа в этой ветке ты не получишь... не козырная она... а от себя такого же вечно-начинающего добавлю, что нужно:
var
List1: TStringList; // - обьявляем
begin
try //проверяем
...
List1 := TStringList.Create; //создаём
...
finally
List1. Free; //выгружаем
end;
kyn66 (2005-10-20 12:31:00) [13]Проблема в том, что работая с переменными, я их предварительно объявляю. А как быть с полями записей. Как и когда их объявлять, чтобы с ними работать. Ведь изначально они Nil
Zhekson (2005-10-20 12:26:00) [14]Baltika-7 (20.10.05 12:16) [12]
если в дополнение, то только к вами сказанному...
Baltika-7 (2005-10-20 12:16:00) [15]
> Zhekson (20.10.05 12:12) [11]
>
> вместо B_Ar.B_St1 := St1;
Не вместо, а в дополнение.
Zhekson (2005-10-20 12:12:00) [16]вместо
B_Ar.B_St1 := St1;
B_Ar.B_St1Assign(st1);если с заменой содержимого иst2.AddStrings(s1)если добавить
Baltika-7 (2005-10-20 12:00:00) [17]
> Да, спасибо, понял(это была прелюдия). А как мне поступить
> с [4] ?
А в чем проблема?
Type
TBiletArray = packed record
B_Nomer : packed array[0..255]of Char;
B_St1 : TStringList;
B_St2 : TStringList;
B_St3 : TStringList;
B_St4 : TStringList;
B_St5 : TStringList;
B_St6 : TStringList;
end;
Var
B_Ar : TBiletArray;
...
B_Ar. B_St1:= St1;
Zhekson (2005-10-20 11:58:00) [18]kyn66 © (20.10.05 11:53) [7]
казырная у тебя прелюдия, а я так туплю... так мастерам до того иногда нефиг делать, что они с меня гадят, по этому поводу...
Zhekson (2005-10-20 11:53:00) [19]вот те раз... и то и то не работает, что лучше???
по моему в этом случае лучше то, что глубже...
kyn66 (2005-10-20 11:53:00) [20]>> Baltika-7
Да, спасибо, понял(это была прелюдия). А как мне поступить с [4] ?