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

Вниз

чтение файла помогите   Найти похожие ветки 

 
root ©   (2006-12-18 13:50) [0]

почему нечитается весь файл
fi:=TFileStream.create(FileNameA, fmOpenReadWrite);
 try
   GetMem(p, fi.size);
   fi.read(p^, fi.size);
 finally
   fi.free;
 end;
 showmessage(intToStr(Length(p)));
 FreeMem(p);
читается только 8 или 6 или 15 байт??? хотя файл 250 Кб


 
Сергей М. ©   (2006-12-18 13:53) [1]

Значет p объявлена и используется неверно


 
Джо ©   (2006-12-18 13:54) [2]

Что есть p?


 
Reindeer Moss Eater ©   (2006-12-18 13:55) [3]

function THandleStream.Read(var Buffer; Count: Longint): Longint; override;


 
Loginov Dmitry ©   (2006-12-18 15:14) [4]

> читается только 8 или 6 или 15 байт


А ты это откуда знаешь?


 
StriderMan ©   (2006-12-18 15:30) [5]

fl.size в отладке что показывает?


 
root ©   (2006-12-18 16:06) [6]

показывает все как нужно 250768


 
Правильный Вася   (2006-12-18 16:22) [7]

а зачем файл тебе в памяти дважды?


 
root ©   (2006-12-18 16:36) [8]

кооче задача следующая нужно считать файл
считывает невесь файл а лишь кусок вот еще код тоже неработает
Stream := TFileStream.Create(FileNameA, fmOpenRead);
     Size := Stream.Size;
     GetMem(Buffer, Size);
     Stream.Read(Buffer[0], Size);
     FreeMem(Buffer);
     Stream.Free;

Buffer это PChar
что может быть??

все всзято из примеров по работе с потоком TfileStream


 
Reindeer Moss Eater ©   (2006-12-18 16:39) [9]

показывает все как нужно 250768

Остается решится на смелый и отважный поступок.
Посмотреть, а что же возвращает метод Read.
А вдруг он совершенно случайно тоже покажет все что нужно. А именно 250768.


 
Loginov Dmitry ©   (2006-12-18 16:43) [10]

> что может быть??


Ты о чем?


 
root ©   (2006-12-18 16:54) [11]

выдает нормально
но
ShowMessage(IntToStr(Length(Buffer)));
frFile.Memo1.Lines.Text:=Buffer;
дает всего 8


 
StriderMan ©   (2006-12-18 17:27) [12]

может там где-то #0 затесалась? вот Length на нее и срабатывает.


 
Loginov Dmitry ©   (2006-12-18 17:29) [13]

> дает всего 8


Что дает 8. Из всего приведенного не вижу ничего, что бы могло сказать "даю 8"

Какой текст в Мемо после frFile.Memo1.Lines.Text:=Buffer; ?
Какой текст в Файле?


 
Anatoly Podgoretsky ©   (2006-12-18 17:31) [14]

> root  (18.12.2006 16:54:11)  [11]

У тебя файл не текстовый


 
Loginov Dmitry ©   (2006-12-18 17:34) [15]

Хотя ошибаюсь. Хитрой Length ворощает длину для PChar"ов. Тогда дело действительно скорее всего в #0.



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

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

Наверх




Память: 0.49 MB
Время: 0.041 c
2-1166528411
niko
2006-12-19 14:40
2007.01.07
Выгрузка dll


6-1155411966
Logun
2006-08-12 23:46
2007.01.07
Видимость TWebBrowser


2-1166425607
vitv
2006-12-18 10:06
2007.01.07
Округление числа


2-1166381023
allrussia
2006-12-17 21:43
2007.01.07
Как и можно ли создать таблицу в таблице?


2-1166178093
>>DEATH<<
2006-12-15 13:21
2007.01.07
конфиги