Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

чтение файла помогите


root ©   (2006-12-18 13:50:00) 

почему нечитается весь файл
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 Кб


Loginov Dmitry   (2006-12-18 17:34:00) [1]

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


Anatoly Podgoretsky   (2006-12-18 17:31:00) [2]

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

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


Loginov Dmitry   (2006-12-18 17:29:00) [3]

> дает всего 8


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

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


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

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


root   (2006-12-18 16:54:00) [5]

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


Loginov Dmitry   (2006-12-18 16:43:00) [6]

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


Ты о чем?


Reindeer Moss Eater   (2006-12-18 16:39:00) [7]

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

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


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

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

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

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


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

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


root   (2006-12-18 16:06:00) [10]

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


StriderMan   (2006-12-18 15:30:00) [11]

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


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

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


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


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

functionTHandleStream.Read(var Buffer; Count: Longint): Longint; override;


Джо   (2006-12-18 13:54:00) [14]

Что есть p?


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо