Она грубо говоря из исходного файла делает файл под шаблон. Во первых в каждой строчке обрезаю все пробелы слева. Во вторых в каждой строке есть место где подряд идут два пробела, эти два пробела нужно заменить на равно.
Нужно, потому что по шаблону текстовика потом делаются хтмл'ки
Все работает, только в том место где в исходнике встречается запятая, она пропадает и ставится Enter.
Как поправить? Если есть мысли как код оптимизировать жду
Option Explicit
'Dim strName As String
Dim FileNum1 As Byte
Dim FileNum2 As Byte
Dim strText As String
Dim strFileName1 As String
Private Sub Command1_Click()
Dim fileno As Integer
Dim strFileName As String
With CommonDialog1
.FileName = ""
.Filter = "Все файлы (*.*)|*.*"
.Flags = cdlOFNFileMustExist + cdlOFNPathMustExist
.DialogTitle = "Выберите файл для открытия"
.ShowOpen
If .FileName = "" Then Exit Sub
strFileName = .FileName
End With
FileNum1 = FreeFile
Open strFileName For Input As FileNum1
While Not EOF(FileNum1)
Input #FileNum1, strText
FileNum2 = FreeFile
Open strFileName1 For Append As FileNum2
strText = Replace(strText, " ", "=")
Print #FileNum2, strText
Close FileNum2
Wend
Close FileNum1
Kill App.Path & "\temp.txt"
End
End Sub
Private Sub Form_Load()
Dim fileno As Integer
With CommonDialog1
.FileName = ""
.Filter = "Все файлы (*.*)|*.*"
.Flags = cdlOFNFileMustExist + cdlOFNPathMustExist
.DialogTitle = "Выберите файл для открытия"
.ShowOpen
If .FileName = "" Then Exit Sub
strFileName1 = .FileName
End With
FileNum1 = FreeFile
Open strFileName1 For Input As FileNum1
While Not EOF(FileNum1)
Input #FileNum1, strText
FileNum2 = FreeFile
Open App.Path & "\temp.txt" For Append As FileNum2
Print #FileNum2, Trim(strText)
Close FileNum2
Wend
Close FileNum1
Kill strFileName1
End Sub
Я все монипуляции со строками вписал в Form_Load(). На выходе - уже форматированый файл temp.txt.
Дальше ты, наверное, сам разберешься.
Тока я не понял:
1. Зачем открывать и закрывать файл в цикле? (это жутко тормозит прогу)
2. Зачем нужно сначала создавать temp.txt в Form_Load(), а потом выбирать его в Command1._Click()? (-судя по твоему описанию алгоритма)
3. Зачем удалять исходный файл (Kill strFileName1), ведь он, наверное, может ещё понадобиться?
Private Sub Form_Load()
Dim fileno As Integer
Dim s As String
With CommonDialog1
.FileName = ""
.Filter = "Âñå ôàéëû (*.*)|*.*"
.Flags = cdlOFNFileMustExist + cdlOFNPathMustExist
.DialogTitle = "Âûáåðèòå ôàéë äëÿ îòêðûòèÿ"
.ShowOpen
If .FileName = "" Then Exit Sub
strFileName1 = .FileName
End With
FileNum1 = FreeFile
Open strFileName1 For Input As FileNum1
While Not EOF(FileNum1)
Line Input #FileNum1, strText
s = s + Trim(Replace(strText, " ", "=") + vbCrLf
Wend
FileNum2 = FreeFile
Open App.Path & "\temp.txt" For Output As FileNum2
Print #FileNum2, s
Close FileNum2
Close FileNum1
Kill strFileName1
End Sub
Серёга и HACKER спасибо
Завтра на работе проверю, все
Я код делал на скорую руку, так что особо не думал, но весь вопрос был, как я думал что Replace чего не так меняет.
А тут оказывается input касячит, лана сеньку завтра отпишусь
ЗЫ исходный удалил и из темпа заново записал, можно в принципе output'ом затирать, так захотелось
FileNum1 = FreeFile
Open strFileName1 For Input As FileNum1
While Not EOF(FileNum1)
Line Input #FileNum1, strText
s = s + Replace(Trim(strText), " ", "=" + vbCrLf
Wend
Close FileNum1
FileNum2 = FreeFile
Open strFileName1 For Output As FileNum2
Print #FileNum2, s
Close FileNum2