Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Инициализация записи

тут можно задать вопрос по скриптингу
Post Reply
Tomers
Novice
Novice
Posts: 99
Joined: 06.08.2009 11:51

Инициализация записи

Post by Tomers »

Доброго времени суток, товарищи форумчане.

Подскажите, как решить вот такую вот задачку:
Есть масив, состоящий из записей

Code: Select all

a_rec = record   
    name:string;   //строковый элемент (длина рандомная)
    tip:word;        
    name1:string;   //строковый элемент (длина рандомная)  
    name2:string;   //строковый элемент (длина рандомная)             
end;

var
А:array of a_rec;
возможно ли загнать исходные данные для масива А в основной программе. Типа так:

Code: Select all

А:=['Lower',$1BF2,'15','20',    //типа
'100',$1EB8,'5','8',                         //новая строка - новый элемент масива                        
'of the ',$27AC,'mage','12'];            //состоящий из записи


как это делалось, например, для обычного масива:

Code: Select all

bag_ar:=[$400E98C0,$400E98BE,$400E98BF,$400E98BD,$400E98B9];
По форуму искал, нашел только одну загрузку из файла строковых значений, которые затем резались. В данном случае это очень хлопотно по причине рандомной длины строк, да и не желательно создавать дополнительные файлы.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Инициализация записи

Post by Vizit0r »

так делать нельзя. ни в ПС, ни в Delphi.
в дельфах записи можно забивать целиком через Move, но там исходный объект должен быть несколько специфическим.
а в ПС нельзя вообще никак.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Tomers
Novice
Novice
Posts: 99
Joined: 06.08.2009 11:51

Re: Инициализация записи

Post by Tomers »

как тогда решить это можна? Можна может грузить из ТИПИЗИРОВАНОГО файла, потому как со строковыми файлами все очень печально.
yuras
Novice
Novice
Posts: 142
Joined: 11.01.2011 10:34

Re: Инициализация записи

Post by yuras »

Tomers wrote:как тогда решить это можна? Можна может грузить из ТИПИЗИРОВАНОГО файла, потому как со строковыми файлами все очень печально.
неа, файлы работают только со строками. так а что мешает преобразовать строку в структуру. 1-й элемент ид, второй имя и т.д., следующая строка - следующая структура.

кусок кода для примера

Code: Select all

   List := TStringList.Create; 
   List.LoadFromFile(FileNam); 
   for i := 0 to List.Count-1 do 
   begin
      s := List.strings[i];
      Dim[i].tt := StrToInt(Copy(s,1,Pos(' ',s)-1)); 
      Delete(s,1,Pos(' ',s)); 
      Dim[i].x := StrToInt(Copy(s,1,Pos(' ',s)-1)); 
      Delete(s,1,Pos(' ',s)); 
      Dim[i].y := StrToInt(Copy(s,1,Pos(' ',s)-1));
   end'
Last edited by yuras on 08.04.2012 10:16, edited 1 time in total.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Инициализация записи

Post by Vizit0r »

типизированный файл возможен, но
1) только для записей фиксированного размера, никаких строк неизвестной длины
2) нормально в ПС не вычитать его сразу и целиком.

так что только заполнять каждый элемент записей по порядку.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
CFA
Developer
Developer
Posts: 492
Joined: 20.04.2006 6:03
Contact:

Re: Инициализация записи

Post by CFA »

Tomers wrote: возможно ли загнать исходные данные для масива А в основной программе. Типа так:

Code: Select all

А:=['Lower',$1BF2,'15','20',    //типа
'100',$1EB8,'5','8',                         //новая строка - новый элемент масива                        
'of the ',$27AC,'mage','12'];            //состоящий из записи
http://stealth.od.ua/forum/viewtopic.php?p=2847#p2847
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Инициализация записи

Post by Vizit0r »

это слегка другое.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Tomers
Novice
Novice
Posts: 99
Joined: 06.08.2009 11:51

Re: Инициализация записи

Post by Tomers »

yuras wrote:неа, файлы работают только со строками. так а что мешает преобразовать строку в структуру. 1-й элемент ид, второй имя и т.д., следующая строка - следующая структура.

кусок кода для примера

Code: Select all

   List := TStringList.Create; 
   List.LoadFromFile(FileNam); 
   for i := 0 to List.Count-1 do 
   begin
      s := List.strings[i];
      Dim[i].tt := StrToInt(Copy(s,1,Pos(' ',s)-1)); 
      Delete(s,1,Pos(' ',s)); 
      Dim[i].x := StrToInt(Copy(s,1,Pos(' ',s)-1)); 
      Delete(s,1,Pos(' ',s)); 
      Dim[i].y := StrToInt(Copy(s,1,Pos(' ',s)-1));
   end'
Благодарствую. Все не так и сложно оказалось. Работает нормально
Post Reply