2Местным гуру и вообще хорошим людям :)

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Аlex3
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 25.03.2003 (Вт) 23:15

2Местным гуру и вообще хорошим людям :)

Сообщение Аlex3 » 25.03.2003 (Вт) 23:31

Уважаемые, есть у меня такая проблемма - не знаю как зделать считывание информации после определенного знака в строке. Тоесть у меня есть текстовой файл в котором идет параметры и присвоеные им числовые значения:
___________________
aaa=700
bbb=500
ccc=1872
ddd=1234,463,213,3676
___________________
и т .д
Например у меня есть переменная ddd - программа бы искала строчку с ddd и присваивала переменной значение 1234,463,213,3676? Как это осуществить...
Буду очень признателен, если кто-нибудь зашлет мне пример программы на email alex@blizzard.ru или просто стунется в icq: 755992.
Буду очень признателен...
p.s. Вы-уж не смейтесь - взялся за VBasic недели 2 назад...

sanches
El compañero
El compañero
 
Сообщения: 823
Зарегистрирован: 09.01.2003 (Чт) 3:58
Откуда: Р_О_С_С_И_Я ! (Питер)

Сообщение sanches » 26.03.2003 (Ср) 0:05

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

Dim fnum as Long
Dim line as String
Dim arrvar() as String
fnum = FreeFile
Open "c:\file.txt" For Input As #fnum

Do Until EOF(fnum)
Line Input #fnum, line
arrVar = Split(line,"=")

'....
'arrVar(0) - имя переменной
'arrVar(1) - значение
'здесь код для добавление переменной, например в набор (коллекцию), но именно это мне и в падлу ща писать. Я использую класс с двумя свойствами: Name и Value (соответственно). В результате будем иметь набор переменных со значениями (при этом добавлять в набор следует с ключем, равным именем переменной, например
Set NewVar = Vars.Add(arrVar(0))
NewVar.Name = arrVar(0)
NewVar.Value = arrVar(1)

Loop

Ну а чтобы получить значение переменной из набора пишешь Result = Vars("health"). Также следует отлавливать ошибку о том, что такая-то переменная не найдена (отсутствие в наборе эдемента с таким индексом)

хух, надеюсь, объяснил..... :) НУ а скодом, либо сам пока разберись, либо пусть какой-нить "местный гуру" напишет :D

P.S. а я пошел спать :wink:
Изображение

Firestorm
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 946
Зарегистрирован: 02.05.2002 (Чт) 14:36
Откуда: Russia

Сообщение Firestorm » 26.03.2003 (Ср) 15:18

попробуй использоавть fso textstream...
для удобства, занеси каждую сроку в массив... а потом извращайся как хочешь... а потом записывай обратно всё в файл...
я считаю это куда быстрее работает, нежели без fso и с open xxx for yyy.... хоть мегабайтные файлы... :twisted:

вот например, как занести текст в массив:

Код: Выделить всё
'объявляем
Dim fso As New FileSystemObject
Dim script1 As TextStream
Dim ar() as string

'например, вешаем на кнопку...
Set fso = New FileSystemObject
Set script1 = fso.OpenTextFile(App.Path & "\scripts.txt", ForReading, False)
'-----откроем сначла для подсчёта строк...
Do While Not script1.AtEndOfStream
    script1.ReadLine
    i = i + 1
Loop
script1.Close
ReDim ar(i)
'----теперь, когда известно кол-во строк, заполняем массив...
Set script1 = fso.OpenTextFile(App.Path & "\scripts.txt", ForReading, False)
For j = 0 To i - 1
    ar(j) = script1.ReadLine
Next j
script1.Close

'теперь у тебя будет массив ar(i), где i - кол-во строк...
'и циклами можешь извращаться дальше...

'а это код для записи в файл... файл должен изначально существовать...
Dim sch1 as integer
Set script1 = fso.OpenTextFile(App.Path & "\scripts.txt", ForWriting, False)
    For sch1 = 0 To i - 1
         script1.Write ar2(sch1) & vbCrLf
    Next sch1
script1.Close
   

:roll:
Последний раз редактировалось Firestorm 26.03.2003 (Ср) 16:13, всего редактировалось 1 раз.
...просто гламурный падонак...
_________________
reborn! v.2 :twisted:
_________________

Аlex3
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 25.03.2003 (Вт) 23:15

Сообщение Аlex3 » 26.03.2003 (Ср) 16:01

Спасибки... Я потрясен - так оперативно :) Respect...

sanches
El compañero
El compañero
 
Сообщения: 823
Зарегистрирован: 09.01.2003 (Чт) 3:58
Откуда: Р_О_С_С_И_Я ! (Питер)

Сообщение sanches » 26.03.2003 (Ср) 19:05

вот я тута привел свою писанину в читабельный вид и спешу выложить. здеся два класса: Varable и Variables (Collection). Вобщем вся инфа в Readme. Кстати, RayShade или к кому тут лучше....как насчет выложить сие на сайте? :wink:

P.S. просьба заценить всем :roll: :wink:
Вложения
VarsExample.zip
Набор переменных
(6.8 Кб) Скачиваний: 123
Последний раз редактировалось sanches 26.03.2003 (Ср) 20:53, всего редактировалось 1 раз.
Изображение

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 26.03.2003 (Ср) 19:10

Это не ко мне, а к ASD или gaidar ;)

Письмо им напиши, а в нем изложи суть дела ;)

jetcom
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 181
Зарегистрирован: 12.01.2003 (Вс) 23:15
Откуда: Russia, Novorossiysk

Сообщение jetcom » 27.03.2003 (Чт) 4:35

2Аlex: Что-то твоя проблема очень напоминает структуру ***.INF-файла! :wink: Может тебе лучше поюзать API для работы с ними? Результаты довольно интересные, поверь мне! :D
Всё сбудется!!!

Аlex3
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 25.03.2003 (Вт) 23:15

Сообщение Аlex3 » 28.03.2003 (Пт) 0:42

2sanches гридз :)) Спасибо за исходники, но я уже свой алгоритм написал. Воспользовася твоим куском кода:
===
Set NewVar = Vars.Add(arrVar(0))
NewVar.Name = arrVar(0)
NewVar.Value = arrVar(1)
===
2jetcom Подобие ini файла :) Вообще я нуб в програмировании :) Занимаюсь програмированием давно, но дальше чем за Hello World! Не доходило. Тут просто посмотрел Visual Basic - хоть и говорят, что этот эзык для лаймеров, но он меня реально сильно удивил... Возможностей безгранично и кстати язык довольно простой.

jetcom
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 181
Зарегистрирован: 12.01.2003 (Вс) 23:15
Откуда: Russia, Novorossiysk

Сообщение jetcom » 28.03.2003 (Пт) 1:00

Да, конечно же ini, (оЧЕпятка вышла...) ночные прогулки по инету до добра не доводят! :)
Всё сбудется!!!


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

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

Сейчас этот форум просматривают: Yandex-бот и гости: 44

    TopList