Главная страница
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
11-25726
SPeller
2003-06-20 14:57
2004.03.09
Значок у темы ветки


14-25861
Кен
2004-02-15 04:35
2004.03.09
То метро, то аквапарк. Страшно жить. Как быть ?


3-25683
gedd
2004-02-09 07:22
2004.03.09
ehlib


8-25826
Zeus_Chess
2003-11-05 10:50
2004.03.09
РАБОТА С *.mp3


7-25946
Pirate
2003-12-20 15:42
2004.03.09
Друзья! Нужно получить список имен файлов при DragDrop`е.