Что нового

[Файловая система] запись, загрузка, замена данных в ini файл.

lazarxxx

Новичок
Сообщения
53
Репутация
2
Доброго всем времени!
Подскажите плис, каким образом можно сохранить, считать и изменить данные в файле!
Задача примерно такая.
1 надо сохранить эти данные в start.ini
Код:
Global $torgres[7]=[1,1,1,1,1,1,1]
Global $torgres1[8]=[0,0,0,0,0,1,1,1]
Global $torgres2[4]=[0,0,1,1]
Global $torgres3[5]=[0,1,0,0,0]

2 заменить на допустим $torgres2[4]=[0,0,1,1] на $torgres2[4]=[1,1,0,0]
после замены это должно выглядеть так
Код:
Global $torgres[7]=[1,1,1,1,1,1,1]
Global $torgres1[8]=[0,0,0,0,0,1,1,1]
Global $torgres2[4]=[1,1,0,0]
Global $torgres3[5]=[0,1,0,0,0]

3 ну и считать это всё!
Заранее благодарен!
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
lazarxxx
Из прочитанного я понял только 2-й пункт:
Код:
#include<Array.au3>
Global $torgres2[4]=[0,0,1,1]
For $i=0 To UBound($torgres2)-1
	If $torgres2[$i]=1 Then
		$torgres2[$i]=0
	ElseIf $torgres2[$i]=0 Then
		$torgres2[$i]=1
	EndIf
Next
_ArrayDisplay($torgres2)

1-й пункт - В каком виде сохранить? Имя секции, имя ключа какими должны быть?
2-й пункт - Что с чем считать и в каком порядке?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
MnM,
ИМХО, так проще.
Код:
#include<Array.au3>

Global $iRand = Random(20, 50, 1), $aArray[$iRand][2]

For $i = 0 To $iRand - 1
	$aArray[$i][0] = Random(0, 1, 1)
	$aArray[$i][1] = Int(Not $aArray[$i][0])
Next
_ArrayDisplay($aArray)
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
madmasles
Да, что то подзабыл про отрицание :rolleyes:
 
Автор
L

lazarxxx

Новичок
Сообщения
53
Репутация
2
[Файловая система] Re: [Файловая система] запись, загрузка, замена данных в ini файл.

Блин. Опять неправильно поставил вопрос.
Смысл такой! У меня отрабатывает скрипт. после отработки скрипта остаются вычисления которые надо сохранить в файл (допустим в .ini)
они могут быть такими
Код:
Global $torgres[7]=[103,12,134,14,14,14,41]
$t=123
$i="привет"

и. т. д.
Точней любыми!
Следующий рас при загрузки скрипта он должен их считать с этого файла.
В этом вопрос! как это сделать?
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Код:
Global $torgres[7]=[103,12,134,14,14,14,41]

For $Idx = 0 To 6 Step 1
    IniWrite( 'myIni.ini', 'main', 'torgres' & $Idx, $torgres[$Idx] )
Next ;Записали

For $Idx = 0 To 6 Step 1
    $torgres[$Idx] = IniRead( 'myIni.ini', 'main', 'torgres' & $Idx, 0 )
Next ;Считали


Наш INI:
Код:
[main]
torgres0=103
torgres1=12
И так далее
 

Z_Lenar

Продвинутый
Сообщения
209
Репутация
52
Код:
#include <Array.au3>

Global $torgres[1]
Global $t
Global $i

ReadConfig()
WriteConfig()

Func ReadConfig($fname = 'Config.ini')
	$torgres = StringSplit(IniRead($fname, 'Main', 'torgres', '103;12;134;14;14;14;41'), ';', 2) ; В конце ф-ции IniRead передается значение по умолчанию. Т.е. если файл настроек или данный пункт не будет найден возвратит '103;12;134;14;14;14;41'
	$t = IniRead($fname, 'Main', 't', 123)
	$i = IniRead($fname, 'Main', 'i', 'привет')
EndFunc

Func WriteConfig($fname = 'Config.ini')
	IniWrite($fname, 'Main', 'torgres', _ArrayToString($torgres, ';'))
	IniWrite($fname, 'Main', 't', $t)
	IniWrite($fname, 'Main', 'i', $i)
EndFunc
 

ivsatel

Продвинутый
Сообщения
319
Репутация
84
Такой вариант:
Код:
Local $torgres[1], $sTorgres1

$aArray = StringSplit(IniRead(@ScriptDir & "\B.ini", "torgres", "Torgres1", "default"), ",")

If @error Then
	For $i = 1 To 7
		If $i = 7 Then
			$sTorgres1 &= Random(0,1,1)
		Else
			$sTorgres1 &= Random(0,1,1) & ","
		EndIf
	Next
	IniWrite(@ScriptDir & "\B.ini", "torgres", "Torgres1", $sTorgres1)
	$sTorgres1 = ''
	$aArray = StringSplit(IniRead(@ScriptDir & "\B.ini", "torgres", "Torgres1", "default"), ",")
EndIf

For $i = 1 To $aArray[0]
	ReDim $torgres[$i + 1]
	$torgres[$i] = $aArray[$i]
	ConsoleWrite($torgres[$i] & @LF)
Next

For $i = 1 To UBound($torgres) - 1
	$torgres[$i] = Random(1, 2, 1)
Next

ConsoleWrite("********************************" & @LF & "********************************" & @LF)

For $i = 1 To UBound($torgres) - 1
	If $i = UBound($torgres) - 1 Then
		$sTorgres1 &= $torgres[$i]
	Else
		$sTorgres1 &= $torgres[$i] & ","
	EndIf
	ConsoleWrite($torgres[$i] & @LF)
Next

IniWrite(@ScriptDir & "\B.ini", "torgres", "Torgres1", $sTorgres1)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
lazarxxx,
Моя версия.
Код:
#include <Array.au3>

Global $aiData, $sData, $iData

_Init($aiData, $sData, $iData)
_ArrayDisplay($aiData, $sData & ' ' & $iData)
ConsoleWrite('VarGetType($aiData) = ' & VarGetType($aiData) & @LF)
For $i = 0 To 4
	ConsoleWrite(@TAB & 'VarGetType($aiData[' & $i & ']) = ' & VarGetType($aiData[$i]) & @LF)
Next
ConsoleWrite('VarGetType($sData) = ' & VarGetType($sData) & @LF)
ConsoleWrite('VarGetType($iData) = ' & VarGetType($iData) & @LF)
OnAutoItExitRegister('_Save')
HotKeySet('{Esc}', '_Exit')

While 1
	For $i = 0 To 4
		$aiData[$i] = Random(100, 999, 1)
	Next
	$iData = Random(1000, 9999, 1)
	If Random(0, 1, 1) Then
		$sData = @OSVersion
	Else
		$sData = @UserName
	EndIf
	Sleep(100)
WEnd

Func _Init(ByRef $ai_Data, ByRef $s_Data, ByRef $i_Data)
	Local $s_Ini = @ScriptDir & '\start.ini', $a_Sect[3] = ['aiData', 'sData', 'iData'], $s_Key = 'Value', _
			$a_DefaultData[5] = [111, 222, 333, 444, 555], $s_DefaultData = 'Default', $i_DefaultData = 6666

	If Not IsArray($ai_Data) Then
		Dim $ai_Data[5]
	Else
		ReDim $ai_Data[5]
	EndIf
	For $i = 0 To 4
		$ai_Data[$i] = Number(IniRead($s_Ini, $a_Sect[0], $s_Key & $i, $a_DefaultData[$i]))
	Next
	$s_Data = IniRead($s_Ini, $a_Sect[1], $s_Key, $s_DefaultData)
	$i_Data = Number(IniRead($s_Ini, $a_Sect[2], $s_Key, $i_DefaultData))
EndFunc   ;==>_Init

Func _Save()
	Local $s_Ini = @ScriptDir & '\start.ini', $a_Sect[3] = ['aiData', 'sData', 'iData'], $s_Key = 'Value'

	For $i = 0 To 4
		IniWrite($s_Ini, $a_Sect[0], $s_Key & $i, $aiData[$i])
	Next
	IniWrite($s_Ini, $a_Sect[1], $s_Key, $sData)
	IniWrite($s_Ini, $a_Sect[2], $s_Key, $iData)
EndFunc   ;==>_Save

Func _Exit()
	Exit
EndFunc   ;==>_Exit
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
lazarxxx [?]
1 надо сохранить эти данные в start.ini
2 заменить на допустим $torgres2[4]=[0,0,1,1] на $torgres2[4]=[1,1,0,0]
3 ну и считать это всё!
Код:
#include<Array.au3>
$sIni = @ScriptDir & "\myfile.ini"

Dim $torgres0[7]=[1,1,1,1,1,1,1]
Dim $torgres1[8]=[0,0,0,0,0,1,1,1]
Dim $torgres2[4]=[0,0,1,1]
Dim $torgres3[5]=[0,1,0,0,0]

_MyFunction($torgres0, $torgres1, $torgres2, $torgres3)
RunWait('notepad.exe ' & $sIni)

_ArrayReverse($torgres2)

_MyFunction($torgres0, $torgres1, $torgres2, $torgres3)
RunWait('notepad.exe ' & $sIni)

; Читаем
$aData = IniReadSection($sIni, "Arrays")
If @error Then 
    MsgBox(4096, "", "Error not occurred, probably no INI file.")
Else
    For $i = 1 To $aData[0][0]
        ConsoleWrite("Key: " & $aData[$i][0] & @CRLF & "Value: " & $aData[$i][1] & @CRLF &'!-------------------------' & @CRLF)
    Next
EndIf

Func _MyFunction($v0 = 0, $v1 = 0, $v2 = 0, $v3 = 0, $v4 = 0, $v5 = 0, $v6 = 0, $v7 = 0)
	
	Local $a_Data[@NumParams][2]
	
	; Заполнили
	For $i = 0 To @NumParams -1
		$a_Data[$i][0] = "torgres" & $i
		$a_Data[$i][1] = _ArrayToString(Eval('v' & $i), ',')
	Next

	; Сохранили
	IniWriteSection($sIni, "Arrays", $a_Data, 0)
	
	Return 0
EndFunc
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
lazarxxx [?]
Вопрос по этой же теме! файл который получается, можно спокойно просмотреть и изменить блокнотом!!! Каким образом сделать всё тоже самое, но не доступное для просмотра! примерно как после компилятора!
Этот вопрос к текущей теме не имеет отношения.
Предупреждение За нарушение общих правил (пункт В.4):
Не лепите несколько вопросов разной тематики в один пост. По типу "Ребят, а ещё такой вопрос...". Каждый вопрос в свою тему.


С уважением, ваш Модератор.
 
Верх