Главная страница
    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.04 c
2-1147774425
Konnor
2006-05-16 14:13
2006.06.04
SQL


3-1144929416
ttt_111
2006-04-13 15:56
2006.06.04
Как сделать поиск в DBgrid?


8-1135496232
vitaliy14
2005-12-25 10:37
2006.06.04
Окнтуривание изображений


2-1147787155
Golik
2006-05-16 17:45
2006.06.04
SQL Запрос .


15-1146854934
ArtemESC
2006-05-05 22:48
2006.06.04
Глаза...





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