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

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

Чтение из файла при помощи Filestream


den49 ©   (2009-10-16 20:39:00) 

НЕ могу разобраться в чем дело. Текст из файла не выводиться в Мемо(((ПОдскажите пожалуйста где ошибка...

procedure TForm1.Button1Click(Sender: TObject);
var p : PChar;
begin
 GetMem(p, 255);
 with TFileStream.Create('c:\12.txt', fmOpenReadWrite) do
   try
     Seek(10,soFromBeginning);
     read(p^, 254);
     Memo1.Lines.Add(p);
   finally
     free;
   end;

   FreeMem(p);
end;


Leonid Troyanovsky   (2009-10-18 23:35:00) [1]


> den49 ©   (16.10.09 22:49) [17]

> Жорж, спасибо за ответ. Разумное решение.

Любопытно, что здесь может означать "разумное".
Критерий разумности - в студию, если не затруднит.

--
Regards, LVT.


den49   (2009-10-16 22:49:00) [2]

Жорж, спасибо за ответ. Разумное решение.


Жорж   (2009-10-16 22:37:00) [3]


> но хорошо бы текст в переменной хранить


var
 SL: TStringList;
...
SL:=TStringList.Create;
..
SL.LoadFromFile('c:\123.txt');
...
Memo1.Lines.Assign(SL); //Копируем текст в мемо из переменной
..
SL.Assign(Memo1.Lines);//Обратно

...
SL.Free;// не забываем разрушать то, что создали явно


Германн   (2009-10-16 21:31:00) [4]


> Это тоже не работает

Под String память кто выделять будет?


den49   (2009-10-16 21:28:00) [5]


> Замени PChar на String и всё будет нормально.


procedure TForm1.Button1Click(Sender: TObject);
var p :string;
begin
with TFileStream.Create('c:\12.txt', fmOpenRead) do
  try
    Seek(10,soFromBeginning);
    read(p, 254);
    Memo1.Lines.Add(p);
  finally
    free;
  end;
end;

Это тоже не работает, когда начиает считывать P inaccessible value.


qwer_qwer   (2009-10-16 21:19:00) [6]


> den49 ©   (16.10.09 21:10) [10]


Замени PChar на String и всё будет нормально.


den49   (2009-10-16 21:19:00) [7]

с Memo1.Lines.LoadFromFile('c:\12.txt'); в мемо все выводиться, но хорошо бы текст в переменной хранить, а не привязывать к компоненту. А 2 фрагмента кода выводят пятый символ и всё.Весь остальной текст остается за кадром(


Медвежонок Пятачок   (2009-10-16 21:13:00) [8]

Какой вариант?
У тебя ненавязчиво спросили что показывают эти два фрагмента кода на твоем файле


den49   (2009-10-16 21:10:00) [9]

НУ да, кстати про этот вариант совсем забыл, спасиб.


Медвежонок Пятачок   (2009-10-16 21:08:00) [10]

....
ShowMessage('считано байт: ' + IntToStr(read(p^, 254));
....


Медвежонок Пятачок   (2009-10-16 21:06:00) [11]

Memo1.Lines.LoadFromFile('c:\12.txt');


den49   (2009-10-16 21:04:00) [12]

В файле текст есть и он текстовый. Delphi 7. Может кто у себя попробует выполнить?


Медвежонок Пятачок   (2009-10-16 21:02:00) [13]

файл у тебя пустой. чего не понятно-то?


den49   (2009-10-16 21:01:00) [14]

ИСправил все равно не пашет. Может добавляю в Мемо не правильно?

procedure TForm1.Button1Click(Sender: TObject);
var p : PChar;
begin
 GetMem(p, 255);
 ZeroMemory(p,255);
 with TFileStream.Create('c:\12.txt', fmOpenRead) do
   try
     Seek(10,soFromBeginning);
     read(p^, 254);
     Memo1.Lines.Add(p);
   finally
     free;
   end;

   FreeMem(p);
end;


Медвежонок Пятачок   (2009-10-16 20:59:00) [15]

Я бы сказал что в нем текста не мало, а нет совсем.


Loginov Dmitry   (2009-10-16 20:57:00) [16]

> НЕ могу разобраться в чем дело. Текст из файла не выводиться
> в Мемо(((ПОдскажите пожалуйста где ошибка...


Вероятно, то в текстовом файле либо текста мало, либо он не такой уж и текстовый (где нибудь затесался нулевой байт).
Версия Delphi какая?


Медвежонок Пятачок   (2009-10-16 20:49:00) [17]

во вторых
with TFileStream.Create('c:\12.txt', fmOpenRead) do


Медвежонок Пятачок   (2009-10-16 20:48:00) [18]

Во первых:
GetMem(p, 255);
затем:
ZeroMemory(p,255);

иначе будет мусор в конце строки


Наверх

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