Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.09;
Скачать: CL | DM;

Вниз

Как записать строку в record?   Найти похожие ветки 

 
Mixa3   (2004-02-27 09:09) [0]

...
SomeRecord = record
f1: string[2];
f2: string[1];
f3: string[3];
end;
...
как поместить строку, например "123456" в запись, чтобы в полях записи соответственно оказалось: в f1 "12", в f2 "3", в f3 "456"?


 
Kerk ©   (2004-02-27 09:13) [1]

SomeRecord = record
case Byte of
0: Field1: array[0..5] of Char;
1: begin
f1: array[0..1] of Char;
f2: Char;
f3: array[0..2] of Char;
end;
end;
end;

Как-то так...


 
Gero ©   (2004-02-27 09:26) [2]

Если я правильно понял, то тебе понадобится Copy + F1


 
anbezr   (2004-02-27 09:27) [3]

var sr: SomeRecord;
str: string;
...
str := "123456";
Move(str[1], sr, Min(SizeOf(sr), Length(str));


 
Kerk ©   (2004-02-27 09:33) [4]

Вообще, AFAIK, использовать string здесь нельзя, т.к. это не просто набор Char"ов, а там еще хранится длина etc


 
Kerk ©   (2004-02-27 09:33) [5]

Вообще, AFAIK, использовать string здесь нельзя, т.к. это не просто набор Char"ов, а там еще хранится длина etc


 
Юрий Зотов ©   (2004-02-27 10:08) [6]

> Mixa3 (27.02.04 09:09)

Короткие строки в нулевом байте содержат текущую длину. Если присваивать каждое поле отдельно (выделяя нужную подстроку с помощью Copy), то длина установится автоматически (и это самый надежный способ). Если же Вы хотите присваивать все разом, то эту длину нужно сформировать вручную.

type
TSomeRecord = packed record
// packed обязательно требуется только для способа 2
f1: string[2];
f2: string[1];
f3: string[3];
end;

var
SomeRecord: TSomeRecord;
S: string;

===========

Способ 1 (рекомендую):

S := "123456";
with SomeRecord do
begin
f1 := Copy(S, 1, 2);
f2 := Copy(S, 3, 1);
f3 := Copy(S, 4, 3);
end;

=====================

Способ 2 (не рекомендую):

S := #2"12"#1"3"#3"456";
Move(S[1], SomeRecord, 9);


 
Mixa3   (2004-02-27 10:13) [7]

Все понятно. Большое спасибо.



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

Текущий архив: 2004.03.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
1-25769
tararasyk
2004-02-26 15:05
2004.03.09
Рисунок в MS Word


14-25937
Knight
2004-02-13 11:38
2004.03.09
Кто каким шампунем или мылом моет голову...


4-25962
KrolikMaster
2004-01-02 00:41
2004.03.09
Эмуляция нажатия клавиши...


3-25720
Александр
2004-02-11 12:56
2004.03.09
Выполнение процедуры без клиента


14-25853
Petr V. Abramov
2004-02-14 21:41
2004.03.09
Soft Must Be Free!