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

Вниз

Ошибка при чтении 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.041 c
15-1147237978
Ega23
2006-05-10 09:12
2006.06.04
С Днём рождения! 9 мая


15-1147070109
Nic
2006-05-08 10:35
2006.06.04
Задача со строками


4-1141653957
GrayFace
2006-03-06 17:05
2006.06.04
Получение содержимого регистров при исключении


2-1146828997
JorSand
2006-05-05 15:36
2006.06.04
НОВОЕ в MDI


2-1147866961
webpauk
2006-05-17 15:56
2006.06.04
Clipboard





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