Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.51 MB
Время: 0.032 c
3-1117001327
ANB
2005-05-25 10:08
2005.07.11
Как скопировать таблицу из схемы в схему (Oracle)


1-1118920806
olevacho
2005-06-16 15:20
2005.07.11
невидимое приложение


1-1119603787
Darkwing
2005-06-24 13:03
2005.07.11
Как узнать текущую позицию в файле?


4-1115703352
dreamse
2005-05-10 09:35
2005.07.11
Как определить Flash диск в системе ?


14-1116828273
Priest
2005-05-23 10:04
2005.07.11
Кто-нибудь качал Update 3 для D2005





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский