Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как присвоить значения одной переменной другой (TStringList) [D7, WinXP]


Страницы:   1 2

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] ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо