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