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

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

Проблема открытия файла [D7, WinXP]


Страницы:   1 2

Гость... ©   (2005-06-13 11:33:00) 

Hello ALL!
Такая вот проблема возникла, никак не могу решить:
есть файл, например 1.mid. Открываю его в своей проге таким образом:

procedure TForm1.XPButton1Click(Sender: TObject);
var
 Buffer: PChar;
 Stream: TFileStream;
 Size:   LongInt;
begin
 Stream := TFileStream.Create('1.mid', fmOpenRead);
 try
   Size := Stream.Size;
   GetMem(Buffer, Size);
   try
     Stream.Read(Buffer[0], Size);
     Memo1.Lines.Text := Buffer;
   finally
     FreeMem(Buffer);
   end;
 finally
   Stream.Free;
 end;
end;

но в TMemo оказывается только первые 4 символа заголовка midi файла "MThd". Buffer пробовал брать string - все равно ничего не получается. Также и с другими файлами, но не со всеми. Помогите. Мне надо, чтобы я мог искать в файлах. Не обязательно даже, чтобы юзер мог видеть.


Anatoly Podgoretsky   (2005-06-13 12:06:00) [21]

Гость...   (13.06.05 12:03) [8]
Еще раз, Read это функция!!!!!!!!


ferr   (2005-06-13 12:06:00) [22]

Можно. А что надо то?


Гость...   (2005-06-13 12:03:00) [23]

а как тогда быть, если мне надо весь текст из файла занести в string. Может можно как-то заменять нулевой символ на "пробел"?


ferr   (2005-06-13 12:01:00) [24]

Тебе два раза ясно ответили на 4-ой позиции нулевой символ, означающий для текста конец строки.


Гость...   (2005-06-13 11:52:00) [25]

может я не правильно выражаюсь, но мне надо открыть файл "как есть", т.е. в бинарном режиме


Гость...   (2005-06-13 11:51:00) [26]

и так я тоже пробовал:

procedure TForm1.Button2Click(Sender: TObject);
var
 Buffer: string;
 Stream: TFileStream;
begin
 Stream := TFileStream.Create('unit1.pas', fmOpenRead);
 try
   SetLength(buffer, Stream.Size);
   Stream.Read(Buffer[1], Stream.Size);
   Memo1.Lines.Text := Buffer;
 finally
   Stream.Free;
 end;
end;


Anatoly Podgoretsky   (2005-06-13 11:50:00) [27]

Гость...   (13.06.05 11:48) [3]
Тогда почему используешь PChar, а речь ведешь про string


Гость...   (2005-06-13 11:48:00) [28]

так мне надо просто скопировать участок из этого файла в string


ferr   (2005-06-13 11:40:00) [29]

там 0 символ наверное. Мемо тут не поможет


Anatoly Podgoretsky   (2005-06-13 11:40:00) [30]

Файл же не текстовый. Посмотри, что в Buffer[4]
Кроме того Read это функция, а не процедура!


Страницы:   1 2

Наверх

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