Помогите вытащить информацию из файла...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Александр80
Bonachón
Bonachón
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Помогите вытащить информацию из файла...

Сообщение Александр80 » 13.01.2005 (Чт) 20:36

Помогите пожалуйста…
Есть файл проекта программы Adobe Premiere, мне нужно из этого файла проекта вытащить путь к файлам которые используются в этом проекте. (Путь заранее не известен....)

Путь прописан так (пример):
fname=E:\\VIDEO\\Video.avi

Если честно, я не ожидал “\\”. Из двух нужно сделать “\” (один)
Задача добавить в LIST - “E:\VIDEO\Video.avi”
Пробую работать с InStr(). Пока не получается. :?
Подскажите пожалуйста… :)

KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

Сообщение KDima » 13.01.2005 (Чт) 20:50

Код: Выделить всё
Mid(Replace(filename, "\\", "\"), 7, Len(Replace(filename, "\\", "\")) - 1)


Оно? :wink:
Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

Александр80
Bonachón
Bonachón
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 13.01.2005 (Чт) 21:00

Оно. :lol: Балбес, я... :oops: Спасибо! :D

Александр80
Bonachón
Bonachón
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 13.01.2005 (Чт) 23:52

Как выделить строку с 6 символа и до конца? (длина не известна).
Кажется с помощью MID можно, но у меня не получается...

Dim Position As Double
Private Sub Command1_Click()
Position = InStr(Position + 1, Text1.Text, "fname=", vbTextCompare)
If Position > 0 Then
Text1.SelStart = Position - 1
Text1.SelLength = Len("fname=")
Text1.SelStart = 6 + Position - 1 'Cтавим курсор после fname=
А как сделать выделение до конца строки? Подскажите пожалуйста...
Text2.Text = Text1.SelText
Text1.SetFocus
End If
End Sub

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 14.01.2005 (Пт) 0:05

Выделить часть содержимого в текстовом контроле или вычленить из строковой переменной? Это разные вещи. Но, учитывая, что ты завел речь о Mid(), то могу сказать, что эта функция в справке прекрасно документирована.
С другой стороны, глядя на твой код, становится понятно, что тебя интересует первый вариант. В таком случае на месте строки красного цвета в твоем коде надо написать вот это:
Text1.SelLength = Len(Text1.Text)
Несмотря на кажущееся превышение суммарной длины строки, басик это проигнорирует (такой уж он всепрощающий, на наше счастье) и выделит твой текст до конца строки, причем даже не свалится с ошибкой, насколько я помню.

Александр80
Bonachón
Bonachón
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 14.01.2005 (Пт) 0:12

Блин, я так уже пробовал.
Странно, но выделяется от "fname=" и до конца файла... :(

Александр80
Bonachón
Bonachón
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 14.01.2005 (Пт) 0:15

Вот текст....

[FILE]
fileID=352
param=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
filetype=1096173910
vname=0
fname=0
isFramestore=0
prefLength=0
mediaType=3
prefHandle=
title=
pixelAspect=0
[FNAM]
fname=E:\\VIDEO\\osad Clip 28.avi
[PRID]
fileID=352
[FDAT]
frame=0,0,720,576
audvalue=355209
audscale=48000
audsamp=1
vidvalue=18500
vidscale=2500
vidsamp=100
depth=24
flags=3
audflags=768
pixelAspect=50332368
fieldType=3
fieldsStacked=0

Александр80
Bonachón
Bonachón
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 14.01.2005 (Пт) 0:32

Прошу прощения, возможно я не корректно выражаюсь. Моя задача найти в тексте все пути к файлам... Поэтому я использовал переменную...(только для поиска). Когда текст "fname=" найден курсор ставится после знака "=" вот от него и нужно выделить до конца пути (строки).

И еще, маленькая поправка:
Double - не строковая переменная

Александр80
Bonachón
Bonachón
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 14.01.2005 (Пт) 0:35

Ennor - спасибо за ответ :D

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 14.01.2005 (Пт) 1:31

Черт. У тебя весь файл загружается сразу, или построчно? Если первое, то конечно он выделит все до конца.
Тебе нужно провести поиск конца строки. Для этого вызови еще раз InStr(), но в качестве первого параметра используй свеженайденную позицию знака равенства, а в третьем - константу vbNewLine. После этого поставишь SelStart как обычно, а SelLength = Position2 - Position1 - 1 (насчет последнего слагаемого надо поиграться, я не уверен, что оно вообще нужно). Тогда у тебя выделится текст только до первого переноса строки.

Александр80
Bonachón
Bonachón
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 14.01.2005 (Пт) 14:29

Ennor - спасибо я понял свою ошибку... :lol:
Спасибо тебе большое... :D

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 14.01.2005 (Пт) 15:31

Вот текст....

[FILE]
fileID=352


Ну и что извращаться?
Это-же типичный INI-файл.

Ну и пользуй GetPrivateProfileString для получения значения нужного ключа. Примеров в интернете валом...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Александр80
Bonachón
Bonachón
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 14.01.2005 (Пт) 16:05

Нет... :lol:
Это файл проекта программы Adobe Premiere 6.5 (программа для видео монтажа).Расширение файла - ".ppj".
Что туда запихала компания Adobe, я незнаю... :( Полный файл длинный, с кучей параметров... Да и какая разница какое это файл, даже если и INI ... :lol:

Всем спасибо! :D

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 14.01.2005 (Пт) 16:07

Разница большая. Юзаешь GetPrivateProfileString.
Lasciate ogni speranza, voi ch'entrate.

Александр80
Bonachón
Bonachón
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 14.01.2005 (Пт) 16:11

Andrey Fedorov - а идея хорошая...(про GetPrivateProfileString) Попробую.
Спасибо... :D

Александр80
Bonachón
Bonachón
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 14.01.2005 (Пт) 16:13

Простите, сразу не дошло... :D

Drag
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 85
Зарегистрирован: 29.01.2005 (Сб) 23:54
Откуда: Москва

Сообщение Drag » 11.11.2005 (Пт) 11:29

Долго мучался, почему GetPrivateProfileString не работает. Через 15 минут дошло - файл не существует...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 51

    TopList