Помогите с написанием программы

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
cg_ck
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 11.06.2003 (Ср) 12:02
Откуда: Riga(Latvia)

Помогите с написанием программы

Сообщение cg_ck » 27.04.2004 (Вт) 17:41

Так, и последнее на повестке сегодняшнего дня:
Есть текстовой файл. Лог файл. Тоесть, в него записывалась вся информация, которая когда-либо была в программе.
Весь текст состоит из строк следующего вида:

:Параметр1 параметр2 параметр3: сообщение



Файл просто огромный, записывался в течении нескольких месяцев и достиг размера в несколько мегобайт.

Собственно нужно написать программу, которая этот лог файл прочитает следующим образом:
1. Выведет только нужную информацию по маске параметров(от ":" до ":" - маска из трёх параметров)
2. Программа не должна подвешивать систему. А вероятно будет(из-за большого размера файла)
3. По возможности, что бы информация добовлялась порциями, допустим по 10-ть строк, а потом пол секунды перерыв(примерно).
4. Возможно ли начать чтение файла с конца на перёд. Что бы сперва выводились самые новые сообщения и прибавлялись по мере их возрасту. Это и есть собственно самая боьшая проблема.

Заранее благодарен.[/u]
Ходит по лесу хомяк, хищный маленький дурак...

Гость
 

Сообщение Гость » 27.04.2004 (Вт) 19:02

Open "file.txt" for input as #1
while not eof(1)
input #1, Peremennaya
if left(peremennaya,11) = ":pr1pr2pr3:" then
list1.additem right(peremennaya, len(peremennaya) - 11)
end if
wend
close #1

Правда будет радотать только если параметры каждой строки будут всегда занимать 11 символов, если не 11, то исправь функцию left, сменив 11 на твоё количество. А если в каждой строке символов параметров каждый раз разное количество, то этот алгоритм не пройдёт.
А ещё в лист много записей не влезут, ты их куда-нибуть в другое место добавляй.

А вот тебе снизу-вверх фиг.

cg_ck
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 11.06.2003 (Ср) 12:02
Откуда: Riga(Latvia)

Сообщение cg_ck » 27.04.2004 (Вт) 22:29

Если разное количество параметров, то пройдёт следующий:

Код: Выделить всё
Dim DATA_ARRAY() As String
DATA_ARRAY = Split(MyStr, ":", 3)
Perem1=DATA_ARRAY(1)
Perem2=DATA_ARRAY(2)


Как бы это ладной ещё, а вот по поводу тормозов и чтения файла задом на перед это ...
Ходит по лесу хомяк, хищный маленький дурак...


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

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

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

    TopList