Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > работа с файлами настроек


Автор: Serzh 14.1.2004, 23:30
народ!
я конечно могу сам написать это все, но меня ломает.. smile.gif
может есть у кого ченить готовое - поделитесь.

имееться файл "temp.ini"
в нем записаны коекакие настройки, например
Port = 6667 ; порт IRC
IP = 192.168.0.1 ; IRC server 1

вот собственно мне нада читать из этого файла инфу и хранить ее в памяти
прога на masm32
зарание всем спасибо smile.gif

Автор: Chingachguk 15.1.2004, 09:45
Юзай GetPrivateProfileString и будет твой код простым...

Автор: Serzh 15.1.2004, 12:40
офигенный сенкс!!!
посмотрел в Win32 SDK Reference от Delphi и очень понравилось!!!
smile.gif)))

ЗЫ Chingachguk, а ты че на почту не отвечаешь? или у тебя новый e-mail?

Автор: Chingachguk 15.1.2004, 15:06
Какую ? На mail.ru ? Пофигачил этот "ресурс" мой ящик тама... Пиши мне в форуме (личное сообщение)...

Автор: Serzh 15.1.2004, 23:22
извеняюсь за глупость, но у меня не пашет sad.gif
вот кусок кода
Код

.386
.model flat, stdcall
option casemap:none

include C:\masm32\include\windows.inc
include C:\masm32\include\kernel32.inc
include C:\masm32\include\user32.inc
include C:\masm32\include\wsock32.inc
include C:\masm32\include\masm32.inc
includelib C:\masm32\lib\masm32.lib
includelib C:\masm32\lib\kernel32.lib
includelib C:\masm32\lib\user32.lib
includelib C:\masm32\lib\wsock32.lib

.const
   szHostsFN       db "ftpscan.ini",0
   szDone          db "Done", 0
   
   szApp           db "FTPScan", 0

   szPeriod        db "PERIOD", 0                    
   szIPq           db "IP", 0                    

   szDPeriod       db "500000", 0
   szDIP           db "127.0.0.1", 0

.data
   Port            dw 21
   TimeOut         dd 10
   Period          dd 10000

.data?
   pMem        db      2048 dup(?)  
   hStdOut     dd         ?
   szMessage   db         2560 dup (?)
   dwBytesDone dd         ?

.code
start:    
   invoke GetStdHandle, STD_OUTPUT_HANDLE
   mov    hStdOut, eax

   invoke GetPrivateProfileString, addr szApp, addr szPeriod, addr szDPeriod, addr pMem, 2048, addr szHostsFN
   invoke WriteFile, [hStdOut], addr pMem, eax, ADDR dwBytesDone, 0

   invoke GetPrivateProfileString, addr szApp, addr szIPq, addr szDIP, addr pMem, 2048, addr szApp
   invoke WriteFile, [hStdOut], addr pMem, eax, ADDR dwBytesDone, 0

   invoke CloseHandle,hStdOut
   invoke MessageBox, 0, addr szDone, 0, MB_OK
   call   ExitProcess
end start

вот файл ини
Код

[FTPScan]
Period = 300000
Port = 21
IP = 192.168.7.30
IP = 192.168.3.136
IP = 192.168.2.98
IP = 192.168.2.50

выдает прога те значения, которые заданы по умолчанию. sad.gif

где я ступил?
ЗЫ а как оно отнесеться к коментариям?

Автор: Serzh 14.2.2004, 03:15
ну не ужели всем так лень сказать, где я не прав?
эх.... пойти напиться чтоли... sad.gif

Автор: Chingachguk 14.2.2004, 09:27
Ну я вот так работаю с этой функцией:

Цитата

.data
; Читаем имя ini-файла
IniFileName db '\net.ini',0
IniFileNameMsg db 'Connect thru proxy to 8080 port started !',0Ah
              db 'Started with ini-file:',0Ah,0
.code
; Пишем имя ini-файла в лог
  push offset IniFileNameMsg
  call Write_Log
  push offset IniFileName
  call Write_Log
  call Write_EndStr_ToLog
.data
HostName db "Current host:",0
wsa WSADATA <0>
.data?
servername db 128 dup (?)
.code
  invoke WSAStartup,00010001h,offset wsa
  test eax,eax
  jz  @@SocketsEnable
.data
NoSocketsMsg db 0Ah,"Sockets are not avaible (WSAStartup error) !",0Ah,0
.code
  push offset NoSocketsMsg
  call Write_Log
  jmp  Exit
@@SocketsEnable:
  invoke gethostname,offset servername,sizeof servername
  push offset HostName
  call Write_Log
  push offset servername
  call Write_Log
  call Write_EndStr_ToLog
; ***
; Получаем имя (IP) proxy-сервера
; ***
.data?
FileStringSize equ 255
FileString db FileStringSize+1 dup(?)
.data?
CurDir    db  256 dup(?)
.data
ProxySec  db "PROXYSEC",0
ProxyName db "Proxy",0
ProxyMsg  db "ProxyServer=",0
szNULL    db 'Not defined !',0
.data?
ProxyNamePar db 255 dup(?)
.code
  INVOKE GetCurrentDirectory, sizeof CurDir, addr CurDir
  INVOKE lstrcat, addr CurDir, addr IniFileName
  INVOKE GetPrivateProfileString, addr ProxySec, addr ProxyName, \
                                  addr szNULL, addr ProxyNamePar, 255, addr CurDir
; Выводим в лог
  push offset ProxyMsg
  call Write_Log
  push offset ProxyNamePar
  call Write_Log
; Определяем IP этой машины


Ну и сам ini:

Цитата

[NET]

; Start IP adress for connect
;StartIP=212.48.140.150
StartIP=212.38.107.40
TotalIPs=1

[PROXYSEC]

; Proxy IP address
Proxy=10.0.3.253
user=Chingachguk
pass=;)))))

Автор: oleg1973 14.2.2004, 14:50
а яб просто зачиталбы в память файлик и самбы разобрал че к чему smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)