Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.07.01;
Скачать: [xml.tar.bz2];

Вниз

чтение файла   Найти похожие ветки 

 
chips   (2002-06-19 15:42) [0]

Уважаемые мастера ,как можно из произвольного файла ( не обязательно ТХТ), извлечь только текст в переменную типа String ?


 
Kaban   (2002-06-19 15:43) [1]

А что значит только текст?


 
chips   (2002-06-19 15:55) [2]

у меня в файле (в его конце) есть ссылка- вида " d:\media\clip.dps" ,связывающая основной файл с дочерним , я ее могу прочитать в "блокноте", а вокруг не нужный мусор( не символьный)
мне ее и нужно достать.


 
Новенький в Делфи   (2002-06-19 16:28) [3]

как мне кажется нужно знать позицию начала текста, и количство нужных символов.
затем открываешь FileOpen();
FileSeek() устанавливаешь позицию
FileRead() читаешь нужное количество символов.

Сам не пробовал если честно :)


 
S@shka   (2002-06-19 16:39) [4]

Вобщем-то какая-то горбуха. (судя по вопросу)
Если ты знаешь позицию в файле где у тебя начинается ссылка то...
var
F: File of Char;
c:Char;
I:Byte;
S:String;
begin
assignfile (F,...);
reset (F);
seek (F,nPos);
S:="";
for i:=1 to 12 do
begin
read (F,c);
S:=S+c;
end;
:) Одно маленькое НО!!! ты должен знать начало и размер ссылки - облом конечно - но энто всего лишь вариант:)


 
Дмитрий Баранов   (2002-06-19 16:49) [5]

Проповедую регулярные выражения и Perl (соотв. пакеты есть и для Delphi)
В этом случае задача решается в две строки примерно так
$FILE =~m|(\w:(?:\.*?)+)\.\w\w\w?)|;
$path = $1;
# извлекли путь по маске:
буква, двоеточие, затем одна или более конструкций (\directoryorfile)затем точка и два или три символа для расширения.

Не стоит пугаться изобилия значков, тут все просто :), а инструмент - мощнейший (практически все компиляторы включают в себя парсер, ядром которого служит механизм регулярных выражений).



 
Игорь Шевченко   (2002-06-19 16:58) [6]


> (практически все компиляторы включают в себя парсер, ядром
> которого служит механизм регулярных выражений).


Это что-то новое в теории компиляторов


 
GrayFox   (2002-06-19 19:16) [7]

для файла понятия только текст нет, если считываешь текст то значит у тебя считываются блоки размером с байт, и выдается соотвествующий символ,
можешь сделать так, поставь строку типа <link>d:/media/clip.avi</link>, потом открывай файл как текстовый и ищи в нем слово <link>, найдя считывай в переменную все что стоит после него и до </link>, т.е. текст между тегами.
а вообще на будущее изучай хml


 
Vitalik   (2002-06-19 20:00) [8]

Вот вариант, предложеный Дмитрием Барановым может и не подойти. Потому что вполне может случится так, что где-то в файле ещё будет написана такая очень даже не редкая последовательность символов. И тогда программа примет эту последовательность за ссылку-связку.
Есть другой простой выход.
В конце файла просто пиши число, которое определяет длинну строки ссылки-связки. Вот пример:
Тут важно переменную какого типа ты будешь использовать. Потому что integer занимает 4 байта, word - 2 байта и т.д. Ты можешь про размеры целых типов посмотреть в справке.

var
f: TFileStream;
l: integer; //Длинна строки ссылки
s: string;//ссылка
begin
f:=TFileStream.Create("FileName", fmOpenRead);//открываем файл
f.Position:=f.Size-SizeOf(l);//устанавливаем позицию в файле для считывания l
f.Read(l, SizeOf(l));//считываем l
s:="";
SetLength(s, l);//Устанавливаем длинну строки
f.Position:=f.Size-SizeOf(l)-l;//устанавливаем позицию для считывания строки
f.Read(PChar(s)^, l);//считываем строку
f.free;//закрываем файл
end;

Ещё чё не ясно, <a href="vitalik@online.sinor.ru">пиши мне</a>.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.07.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.011 c
4-1252
lukey
2002-04-22 07:34
2002.07.01
Работы с векторной графикой


1-994
Tutov Roman
2002-06-12 14:09
2002.07.01
Картинка в StatusBar


1-975
tovSuhov
2002-06-20 10:19
2002.07.01
Люди! Как юзать Splitter?


1-968
MikeFW
2002-06-20 09:17
2002.07.01
Два TreeView. Как переносить данные из одного дерева в другое


4-1260
Alexander
2002-05-01 17:00
2002.07.01
Как, зная ID кнопки (из файла res) определить, что её нажали?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский