Текущий архив: 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.45 MB
Время: 0.006 c