![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема открытия файла [D7, WinXP]
Гость... © (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:38:00) [1]Задавать вопросы твоя задача, как задашь так и получишь.
Гость... (2005-06-13 12:35:00) [2]Спасибо всем. Вроде разобрался.
>Anatoly Podgoretsky © (13.06.05 12:33) [28]
да просто я неправильно выразился в начале. ;)
Anatoly Podgoretsky (2005-06-13 12:33:00) [3]Ндать, жалко правила форума не позволяют персонально прокатываться по интеллекту.
ferr (2005-06-13 12:32:00) [4][23]:SizeOf(Buffer)=SizeOf(Pointer)
> чет я ниче не пойму. А как мне ВЕСЬ "текст" из файла в
> string переденуть?
[5].
Гость... (2005-06-13 12:28:00) [5]чет я ниче не пойму. А как мне ВЕСЬ "текст" из файла в string переденуть?
Anatoly Podgoretsky (2005-06-13 12:27:00) [6]Гость... (13.06.05 12:23) [23]
Он такой и до Stream.Read
ferr (2005-06-13 12:23:00) [7]
> Т.е. при Memo.text:=buffer в memo строка обрезается?
Да, она преобразуется к родному PChar, а он ноликом оканчивается.
Гость... (2005-06-13 12:23:00) [8]хорошо, тогда почему после Stream.Read(Buffer[1], Stream.Size) SizeOf(Buffer) = 4?
Anatoly Podgoretsky (2005-06-13 12:22:00) [9]Напоминаю, это функция, а не процедура.
ferr (2005-06-13 12:21:00) [10]Строки тут вообще не нужны. ИМХО.
Гость... (2005-06-13 12:20:00) [11]>Anatoly Podgoretsky © (13.06.05 12:18) [19]
я так тоже делал. Т.е. при Memo.text:=buffer в memo строка обрезается?
Anatoly Podgoretsky (2005-06-13 12:18:00) [12]Гость... (13.06.05 12:13) [16]
Stream.Read(Buffer[1], Stream.Size);
Гость... (2005-06-13 12:14:00) [13]ну это я просто, чтоб видеть, че я достаю. Забудьте про memo. Оно мне не надо.
ferr (2005-06-13 12:14:00) [14]А причём здесь Memo?
Гость... (2005-06-13 12:13:00) [15]>Anatoly Podgoretsky © (13.06.05 12:12) [14]
ну так а как мне достать из файла string??????
Anatoly Podgoretsky (2005-06-13 12:12:00) [16]Гость... (13.06.05 12:10) [13]
Начинает утомлять.
Anatoly Podgoretsky (2005-06-13 12:12:00) [17]Гость... (13.06.05 12:08) [12]
POS. Copy
Гость... (2005-06-13 12:10:00) [18]//Anatoly Podgoretsky © (13.06.05 12:06) [10]
а возвращает она integer. и че мне с ней делать?
Гость... (2005-06-13 12:08:00) [19]Мне надо в файле найти определенную строку ~4-5 символов, затем копировать содержимое этого файла с начала этой строки и кончая +10 символов в новый файл
Плохиш (2005-06-13 12:07:00) [20]>Гость... (13.06.05 12:03) [8]
Твой файл не является текстовым, как тебе уже много раз сказали/намекнули.