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

Вниз

Ошибка при чтении string из файла   Найти похожие ветки 

 
AlexanderMS ©   (2006-05-16 18:55) [0]

Подскажите, пожалуйста, почему выдаётся ошибка в коде следующего вида:

var s : string;
.....
begin
With TFileStream.Create do
begin
 ......
 read(s, 3);   {здесь ошибка}
 ......
end;
.......


Тогда я объявляю массив of char и читаю через цикл. А как нужно? И почему ошибка?


 
Palladin ©   (2006-05-16 19:04) [1]

потому что сама по себе s является указателем на блок памяти содержащий данные, следовательно что бы прочитать
var
s:string;
n:Integer;
With TFileStream.Create do
begin
......
read(n, SizeOf(n));   {здесь ошибки наверно нет}
SetLength(s,n);
read(s[1],n);
......
end;
.......

правда необходимо что бы строка была записана этим образом (хотя с этого вообще то и нужно было начинать ответ)

var
s:String;
n:Integer;
....
n:=Length(s):
With TFileStream.Create do
begin
......
write(n, SizeOf(n));   {здесь ошибки небудет}
write(s[1],n);
......
end;


 
Desdechado ©   (2006-05-16 19:06) [2]

если прочитать справку внимательно
function Read(var Buffer; Count: Longint): Longint;
то увидим, что тип Buffer не указан, зато стоит var, что говорит, что это указатель на место в памяти, которое должно быть выделено заранее, причем размером не менее Count
а т.к. String заранее память не выделяет, то и ошибка будет

можно использовать Pchar и GetMem


 
Rial ©   (2006-05-16 19:11) [3]

Вывод:

Var L:Integer;
    S:String;
....
L:=Length(S);
Write(L,SizeOf(L));
Write(Pointer(S)^,L);

Чтение

Read(L,SizeOf(L));
SetLength(S,L);
Read(Pointer(S)^,L);


 
TUser ©   (2006-05-16 20:24) [4]

SetLewngth (S, nnn);
read (s[1], nnn);



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

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

Наверх




Память: 0.47 MB
Время: 0.043 c
9-1130941735
Кирилл_
2005-11-02 17:28
2006.06.04
GLScene


2-1148046320
redlord
2006-05-19 17:45
2006.06.04
сообщения для функции sendmessage


6-1138550739
Storm
2006-01-29 19:05
2006.06.04
Шлюз на Delphi


15-1147418488
Думкин
2006-05-12 11:21
2006.06.04
А вы говорите...


2-1148018686
Alex7
2006-05-19 10:04
2006.06.04
свойство "DataSet.Constrstraint"