Найдите ошибку плизззззззззз

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
gjghjc
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 659
Зарегистрирован: 13.10.2002 (Вс) 8:28
Откуда: БАЛАКЛАВА!!

Найдите ошибку плизззззззззз

Сообщение gjghjc » 27.05.2003 (Вт) 8:29

Люди помогите советом!!!!!!!!!
У меня Base почему то сразу становится равным своему второму значению
(Строчка под вопросами)



Private Sub cmdReplace_Click()

If File1.FileName = "" Then MsgBox "Error": Exit Sub

Set Source = FSO.GetFile(App.Path & Tmp & File1.FileName) 'Открыли файл источник
FSO.CreateTextFile (App.Path & Dst & File1.FileName) 'Создали Темповый файл для перекодировки
Set Destin = FSO.GetFile(App.Path & Dst & File1.FileName) 'Досуп к тмп-файлу
Set Base = FSO.GetFile(App.Path & "\Option\Replace\forall.txt")
Set StreamS = Source.OpenAsTextStream(ForReading)
Set StreamD = Destin.OpenAsTextStream(ForWriting)



'__________Процедура замены_____________

Do Until StreamS.AtEndOfStream
TempStr = StreamS.ReadLine
Set StreamB = Base.OpenAsTextStream(ForReading)
Do Until StreamB.AtEndOfStream
Text1 = StreamB.ReadLine
Text2 = StreamB.ReadLine
TempStrRep = Replace(TempStr, Text1, Text2, 1, -1, vbTextCompare)
If TempStrRep <> TempStr Then GoTo lblQRep
Loop
lblQRep:
StreamB.Close
'________Выход из замены________________

'************************************************

'________Процедура удаления_____________

Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!??
Set Base = FSO.GetFile(App.Path & "\Option\Delete\" & File1.FileName)
Set StreamB = Base.OpenAsTextStream(ForReading)
Do Until StreamB.AtEndOfStream
Text1 = StreamB.ReadLine
Text2 = ""
TempStr = TempStrDel
TempStr = Replace(TempStrRep, Text1, Text2, 1, -1, vbTextCompare)
TempStrDel = TempStr
'If TempStrRep <> TempStr Then GoTo lblQRep
Loop
StreamB.Close

StreamD.WriteLine (TempStrRep)
Loop
StreamD.Close
StreamS.Close

End Sub
Утро добрым не бывает!

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

Сообщение Firestorm » 27.05.2003 (Вт) 9:56

както трудновато разобраться в этом коде, не знаю сути... ты скажи что требуется... думаю можно по другому пути пойти... и в чём суть программы... :lol:
...просто гламурный падонак...
_________________
reborn! v.2 :twisted:
_________________

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

Сообщение Firestorm » 27.05.2003 (Вт) 11:02

как я понял, тебе просто нужно с помошью fso заменить слова (или символы) на другие... то вот примерчик накатал... 8)

Код: Выделить всё
Dim fso As New FileSystemObject 'объявляем fso
Dim stream As TextStream 'типа под поток для первого файла
Dim stream2 As TextStream 'под второй, куда будем писать

Set stream = fso.OpenTextFile("c:\tvoifail1", ForReading, False) 'открываем первый файл для чтения
Set stream2 = fso.OpenTextFile("c:\games\12345.txt", ForWriting, False) 'окрываем второй для записи

Do While stream.AtEndOfStream <> True 'и до конца потока первого файла (т.е. весь файл считываем)
stream2.WriteLine Replace(stream.ReadLine, "simvol", "!!!") 'сразу находу заменяем и сразу пишем во второй файл (сразу, без дополнительных переменных)
Loop 'зацикливаем

stream2.Close 'закрываем файл, в который писали
stream.Close 'и закрываем который читали

вот пару примеров создания файлов... :wink:
Код: Выделить всё
'пример номер 1
Open "c:\temp.txt" For Output As #1
Close #1
'привем номер 2, с помошью fso
Set stream2 = fso.CreateTextFile("c:\temp.txt", True, False)
stream2.Close


:roll:
...просто гламурный падонак...
_________________
reborn! v.2 :twisted:
_________________

gjghjc
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 659
Зарегистрирован: 13.10.2002 (Вс) 8:28
Откуда: БАЛАКЛАВА!!

Сообщение gjghjc » 28.05.2003 (Ср) 17:27

2 Firestorm Ты все понял правильно только данные для замены лежат в разных файлах. Т.е. сначала я заменяю на слова которые являются общими для нескольких файлов, а затем на слова которые характерны для каждого файла в отдельности.
Поэтому и нужно вначале установить поток для считывания из первого файла а потом для второго при этом вся эта байда должна находится в цикле для чтения из файла источника в котором производятся замены.
А нужно это для обработки ТВ программ т.к. например выражение "Художественный фильм"заменяемое на "Х/ф" есть практически во всех телеканалах, а например какая нибудь юмористическая программ присутсвует только в одном из десяти.
Можно конечно попробовать создать три потока но будет ли это целесообразно и как это отразится на скорости выполнения программы, ее размере и будет ли это вообще правильным решением.
Утро добрым не бывает!


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

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

Сейчас этот форум просматривают: AhrefsBot, Mail.ru [бот], Yandex-бот и гости: 73

    TopList  
cron