Главная страница
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.054 c
3-1114504022
-=Domix=-
2005-04-26 12:27
2005.06.06
Запрос с ХП


1-1116926448
SergP.
2005-05-24 13:20
2005.06.06
Выравнивание в TEdit


1-1116576122
Layner
2005-05-20 12:02
2005.06.06
Перевод из числа FLOAT в Single (запись из 4 байт)


1-1116606252
Растишка
2005-05-20 20:24
2005.06.06
Цикл


14-1116372170
Петр
2005-05-18 03:22
2005.06.06
Утечка памяти