Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.024 c
2-1166596492
YuMB
2006-12-20 09:34
2007.01.07
Как отловить нажатие клавишь Ctrl + S ?


15-1165746996
Смаг
2006-12-10 13:36
2007.01.07
Путин


3-1161612134
Winni
2006-10-23 18:02
2007.01.07
Как удалить Co Class ?


15-1166125578
AntiUser
2006-12-14 22:46
2007.01.07
Видеофон на основе двух Web-камер


15-1166114616
Ricko
2006-12-14 19:43
2007.01.07
Ваши пожелания к клиенту этого форума




   Наверх