PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Как перевести из .vbs в purebasic


Как перевести из .vbs в purebasic

Сообщений 1 страница 5 из 5

1

Кто-нибудь знает, как можно написать вот такую программу на purebasic, которая бы копировала N файл в др. место, и заменяла в скопированом файле %NAME% на указанное в константе имя:

Вот так это у меня работает на скрипте .vbs

Код:
const yourFullName = "EM140"

Dim FSO

Set FSO = CreateObject("Scripting.FileSystemObject")

FSO.CopyFile "\templates\config.ini.template", "\SimpleX-0.49\config.ini"

Sub ProcessFile(ByVal fName, ByVal from_, ByVal to_)
 Const ForReading = 1, ForWriting = 2

 Dim wFile 
 Dim rFile 
 Set rFile = FSO.OpenTextFile(fName,ForReading)
 Dim Text
 Text = rFile.ReadAll
 Text = replace(Text,from_,to_)

 Set wFile = FSO.OpenTextFile(fName,ForWriting)
 wFile.Write Text

 Set rFile = nothing
 Set wFile = nothing
End Sub 

Sub ProcessName(ByVal fName)
 ProcessFile fName, "%NAME%", yourFullName
End Sub

Sub ProcessAll(ByVal fName)
 ProcessName fName 
End Sub

Set FSO = CreateObject("Scripting.FileSystemObject")

ProcessAll "\SimpleX-0.49\config.ini"

Set FSO = nothing

msgbox "Настройка завершена!!!"

Заранее спасибо. :)

0

2

Здесь понадобится работа с файлами и строками.
Помогут функции из File, FileSystem и String.
С их помощью можно выполнить требуемые действия.

0

3

Спасибо! ;) С копированием разобрался!

Теперь дело за малым, научится работать с ReplaceString...

Код:
Procedure File()
Text.s=""
 If ReadFile(1,"Test.txt")
  While Eof(1)=0
    Text=Text+ReadString(1)+Chr(13)
  Wend
  
  While Eof(1)=0
  Text=ReplaceString(Text, "%NAME%", "Vtyztv ^)")
  Wend
  
  WriteString(1,Text)
  CloseFile(1)

 Else
  MessageRequester("Ошибка","Не удалось открыть файл!")
 EndIf
EndProcedure 

File()

End

К сожалению, не работает... В чём причина?  :dontknow:

0

4

EM140 написал(а):

К сожалению, не работает... В чём причина?

Самая главная причина в том, что файл был открыт только для чтения.
Поэтому запись невозможна - нужно было открывать файл функцией OpenFile().

Код:
Procedure File()
  Text.s=""
  If OpenFile(1,"Test.txt") ; Файл открыт для чтения и записи.
    Size=Lof(1) 
    If Size>0 ; Файл не пустой.
      Text = Space(Size) ; Буфер под данные файла.
      ReadData(1, @Text, Size) ; Считываем данные.
      Text=ReplaceString(Text, "%NAME%", "Vtyztv ^)")
      FileSeek(1,0)    ; Переход в начало файла
      TruncateFile(1)  ; и полная его очистка.
      WriteString(1,Text)
    EndIf
    CloseFile(1)
  Else
    MessageRequester("Ошибка","Не удалось открыть файл!")
  EndIf
EndProcedure 

File()
End

0

5

О! Большое спасибо! :)

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Как перевести из .vbs в purebasic