Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2012, 18:16   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию Типизация. Строки. Типы в типах.

Доброго времени суток!

Есть некий объект TObject, у которого есть record TOptions:
1. как хранить строки произвольной длинны.
2. как в этот Toptions запихать ещё один record?

TObject
-TOptions
--Name:string;
--SmthProp:string;
--State:TValOptions; (или ^TValOptions)

Может быть и такое:
TObject
-TOptions
--Name:string;
--SmthProp:string;
--State:TValOptions; (или ^TValOptions)
---Status:TStatus; (или ^TStatus)

Так же, в каждом под-типе, могут быть строки.....

Как все это реализовать в памяти программы? Структура будет храниться в виде xml файла, и из него же загружаться.
Человек_Борща вне форума Ответить с цитированием
Старый 02.10.2012, 19:59   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А в чем собственно проблемма? Например так
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
type TRecord1 = record
       name1: String;
       name2: String;
     end;
     Trecord2 = record
       alias1: String;
       alias2: String;
       count: Integer;
       array1: array of String;
       record1: TRecord1;
     end;
var record2: Trecord2;
    i: Integer;
begin
  record2.alias1:='тра-ля-ля';
  record2.alias2:='1111111111111111111111111111111';
  record2.count:=2;
  SetLength(record2.array1,record2.count);
  record2.array1[0]:='2222222222222';
  record2.array1[1]:='2222222222222+3333';
  record2.record1.name1:='1';
  record2.record1.name2:='1';

  Memo1.Lines.Add(record2.alias1);
  Memo1.Lines.Add(record2.alias2);
  for i:=0 to record2.count-1 do Memo1.Lines.Add(record2.array1[i]);
  Memo1.Lines.Add(record2.record1.name1);
  Memo1.Lines.Add(record2.record1.name2);
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.10.2012, 21:12   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как хранить строки произвольной длинны.
TStringList
не?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.10.2012, 21:50   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Stilet, не вариант. У record'а есть поле Name:string и оно может быть любой длинны.

Во времени выполнения не критично применять в record'ах строки, вместо PChar'ов?
Человек_Борща вне форума Ответить с цитированием
Старый 04.10.2012, 21:40   #5
Khayzenberg
Пользователь
 
Регистрация: 21.07.2011
Сообщений: 54
По умолчанию

также нельзя прописывать в структурах динамические масивы. Нужно чтобы структура была фиксированной величины...
Khayzenberg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
О типах данных kishtuki C# (си шарп) 4 28.02.2012 20:51
Регулярные типы : строки. maks2020 Помощь студентам 1 04.12.2011 14:35
Проблема в типах artem611 Паскаль, Turbo Pascal, PascalABC.NET 2 11.04.2011 10:18
всеобщая ЧИПизация КАРТизация и ТИПизация всей страны grenles Свободное общение 10 01.03.2011 21:18
C# ошибка в типах Gohan Помощь студентам 1 20.02.2011 14:54