Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
1-25762
Zyb
2004-02-27 08:46
2004.03.09
Антивирусник


3-25696
Дмитрий Татарников
2004-02-07 02:26
2004.03.09
Ошибки в таблицах Paradox


1-25802
Германн
2004-02-19 02:33
2004.03.09
Exceptions. Можно ли получить полный контроль над ними?


14-25875
sHinE
2004-02-16 21:59
2004.03.09
WinAPI в TurboPascal


14-25896
Тимохов
2004-02-11 11:23
2004.03.09
Рихтер I




   Наверх