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

Вниз

Массив и строки.   Найти похожие ветки 

 
chelovek   (2005-05-21 08:55) [0]

Как строку передать в массив?
Например:

var
MyPeremArray: array [0..31] of Char;
MyPeremStr: String[32];


 
begin...end ©   (2005-05-21 08:59) [1]

В данном случае можно так:

Move(MyPeremStr[1], MyPeremArray, 32)


 
chelovek   (2005-05-21 09:04) [2]

begin...end ©   (21.05.05 08:59) [1]
Спасибо.


 
Defunct ©   (2005-05-21 09:45) [3]

строка это уже массив Char.

MyPeremStr[i] - i-й чар строки.


 
petya-kurochkin ©   (2005-05-21 09:56) [4]

Кстати, есть вариант цикла:
for i=1 to 31 do MyPeremStr[i]:=MyPeremArray[1];


 
chelovek   (2005-05-21 10:07) [5]

petya-kurochkin ©   (21.05.05 9:56) [4]

вариант с ошибками :)

тогда уж MyPeremStr:=MyPeremArray;
хотя я и не об этом спрашивал.


 
Defunct ©   (2005-05-21 10:10) [6]

> chelovek

Скажите, а для чего понадобилось более универсальный массив чар ака String переводить в менее универсальный - array[0..31] of char. Неужели так важно нумеровать с нуля?


 
chelovek   (2005-05-21 10:14) [7]

Defunct ©   (21.05.05 10:10) [6]

Для записи в файл.


 
Defunct ©   (2005-05-21 10:21) [8]

ну так imho String лучше подходит для записи в файл.

можно так:
S: String[32]
// Запись
BlockWrite(F, S, SizeOf(S) );

// Чтение
BlockRead( F, S, SizeOf(S) );


а можно и даже так (не сохраняя лишних символов):
S : String;
I : Integer;

// Запись
I := Length(S);
BlockWrite( F, I, SizeOf(i) );  // Сохраняем кол-во символов
BlockWrite( F, S[1], i);        // Сохраняем строку в файл

// Чтение
BlockRead( F, I, SizeOf(i) );   // Читаем сохраненную длину
SetLength( S, I);               // Меняем длину строки
BlockRead( F, S[1], i);         // Читаем строку из файла


 
Defunct ©   (2005-05-21 10:24) [9]

Для коротких строк:

S : ShortString;

// Запись

BlockWrite( F, S[0], Length(S)+1);

// Чтение
BlockRead(F, S[0], 1);
BlockRead(F, S[1], Byte(S[0]) );


 
chelovek   (2005-05-21 10:35) [10]

Defunct ©   (21.05.05 10:24) [8]
Defunct ©   (21.05.05 10:24) [9]

В принципе согласен.
Но дело в том, что есть некая сложная структура типа

type
MyRecord = record
           name: String[32];
           date: tDateTime;
           ................
           end;


Вот если в таком виде сохранять, то сохраняется строка в виде
[длина строки], [строка],[date],[....] и так далее. В файле с которым мне необходимо работать (файл создает не мое приложение) нет поля [длина строки]. У меня получилось читать и писать в этот файл только с таким типом:

type
MyRecord = record
           name: array [0..31] of Char;
           date: tDateTime;
           ................
           end;

Вот собственно и все. Нумерация с 0 по привичке, что бы не заморачиваться с началом отсчета где с 0 где с 1.


 
Defunct ©   (2005-05-21 10:56) [11]

> файл создает не мое приложение

Тогда не вопрос.



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

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

Наверх




Память: 0.49 MB
Время: 0.027 c
1-1116582026
mnx
2005-05-20 13:40
2005.06.06
Косвенная команда


1-1116875983
INCOGNITO
2005-05-23 23:19
2005.06.06
алгоритм преобразования TDateTime в String


11-1098259467
IceMan
2004-10-20 12:04
2005.06.06
Люди помогите


1-1116920811
ALL
2005-05-24 11:46
2005.06.06
Drag&Drob


4-1113350845
Vladimyr
2005-04-13 04:07
2005.06.06
Service auto-start