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

Вниз

Как записать строку в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
6-25851
AndreySoft
2003-11-12 22:20
2004.03.09
Как отправить сообщение на ICQ номер


1-25819
Макс Реалов
2004-02-25 15:22
2004.03.09
Конструкторы и статические методы.


14-25905
Думкин
2004-02-14 06:10
2004.03.09
С днем рождения! 14 февраля.


14-25871
Плохиш
2004-02-16 12:46
2004.03.09
Никлаусу Вирту сегодня 70!


11-25725
avakss
2003-06-19 18:42
2004.03.09
KOLFTP





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