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

Вниз

Как в динамике задавать размеры поля Field1 записи TRecord?   Найти похожие ветки 

 
Andrew   (2003-08-15 11:49) [0]

Как в implementation в динамике задавать размеры поля Field1 записи TRecord, вместо const?

например, в таком коде:

const MaxSizeKeyedField = 255; // эту строку необходимо заменить на переменную, с которой можно было бы работать в implementation.

type
TRecord = record
Field1: string[MaxSizeKeyedField];
Field2: LongInt;
end;

TКакой-нибудь класс = class(TObject)
private
{ Private declarations }
F: file of THelmRec;
public
{ Public declarations }
............................
end;


 
Skier   (2003-08-15 11:51) [1]

Field1: string; + SetLength(...) ?


 
Andrew   (2003-08-15 11:59) [2]

Я имею в виду возможность изменять MaxSizeKeyedField произвольно по ходу выполнения программы.
Может ли кто-то показать как это сделать в виде небольшого примера?


 
Семен Сорокин   (2003-08-15 12:13) [3]

type
TRecord = record
Field1: array of char;
Field2: LongInt;
end;

var
_rec: TRecord;

SetLength(_rec.Field1, MaxSizeKeyedField);


 
Andrew   (2003-08-15 12:43) [4]

Семен Сорокин!
Спасибо за практический совет!
Попробовал применить Ваш пример, код ниже.
Но получаю при компилировании следующую ошибку:
" Type "TRecord" needs finalization - not allowed in file type"
Подскажите, что так прописал?

type
TRecord = record
Field1: array of Char;
Field2: LongInt;
end;

TКакой-нибудь класс = class(TObject)
private
{ Private declarations }
F: file of TRecord;
tr: TRecord;
FMaxSizeKeyedField: LongInt;
public
{ Public declarations }
constructor Create(const FileName, HelmFName: string);
end;

implementation

constructor TPioneerDb.Create(const FileName: string);
begin
inherited Create;

AssignFile(F, FileName);
if FileExists(FileName) then begin
FMaxSizeKeyedField:= 255;
SetLength(tr.Field1, FMaxSizeKeyedField);
Reset(F);
end else
Rewrite(F);
end;


 
Reindeer Moss Eater   (2003-08-15 12:45) [5]

type
TRecord = record
Field1: string;//[MaxSizeKeyedField];
Field2: LongInt;
end;


 
Семен Сорокин   (2003-08-15 12:50) [6]

F: file of TRecord; для динамических рекордов не катит.
открывай как обычный файл и считывай данные в динамический буфер.


 
Andrew   (2003-08-15 12:56) [7]

А как в последствии в поле Field1: array of Char; практически вводить информацию, например текстовую или численную?

Я допустил некоторую неточность в объявлении constructor Create(const FileName, HelmFName: string); - следует читать как constructor Create(const FileName: string);


 
app   (2003-08-15 13:03) [8]

Записи могут быть только фиксированной длины, а типизированные файлы таботают только с типами, и не могут сожержать в себе объекты переменной длины, к тому же находщиеся за пределами этой записи.


 
Andrew   (2003-08-15 13:06) [9]

Семен Сорокин.
Можно ли по последним вопросам небольшой практичекий пример привести (о считывании данных в динамический буфер и вводить/считывать из поля Field1: array of Char информацию, например текстовую или численную?
Всем спасибо за поддержку!


 
Skier   (2003-08-15 13:13) [10]

>Andrew (15.08.03 13:06) [9]
С твоей записью прекрасно справится TStringList.
Не думал об этом ? :)


 
Serginio666   (2003-08-15 13:18) [11]

Тебе придется применять несколько другой подход нежели типизированные файлы. Посмотри
http://www.1c.hippo.ru/cgi-bin/predownl.cgi?id=2019

Там есть простое иерархическое хранилище.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.08.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.012 c
3-91988
Ditrix
2003-08-06 11:38
2003.08.28
Locate в FIBDataset


14-92170
Подзабыл...
2003-08-11 00:25
2003.08.28
WinSDK


3-92049
Relaxxx
2003-08-04 12:05
2003.08.28
Почему придобавлении строки в таблицу строка добавляется но Делфи


6-92145
ЮРИЙ_К
2003-06-20 11:55
2003.08.28
Пример чата без серверной части на MailSlot


3-92039
Антон Ю.
2003-08-01 14:38
2003.08.28
Fetch All для запросов в FastReport автономных отчетах





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский