Hallo hier noch ein Problem
Ich möchte mit dem Programm einen Inhalt in der Datei ändern also nur einen teil einer Zeile wo hintendran noch was steht.
Im Anhang
#
MfG tim
Hallo hier noch ein Problem
Ich möchte mit dem Programm einen Inhalt in der Datei ändern also nur einen teil einer Zeile wo hintendran noch was steht.
Im Anhang
#
MfG tim
ich glaube das sind deine freunde:
http://www.autoitscript.com/autoit3/docs/f…ileReadLine.htm
http://www.autoitscript.com/autoit3/docs/f…ringReplace.htm
Hier die Lösung...
Über Sinnhaftigkeit des Ganzen lässt sich streiten:
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <DateTimeConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#include <GuiTab.au3>
#include <File.au3>
#include <array.au3>
$Form1 = GUICreate("Form1", 314, 254, -1, -1)
$Altes_PW = GUICtrlCreateInput("", 50, 40, 200, 21, BitOR($ES_PASSWORD,$ES_AUTOHSCROLL))
$Neues_PW = GUICtrlCreateInput("", 50, 104, 200, 21, BitOR($ES_PASSWORD,$ES_AUTOHSCROLL))
$Neues_PW_WDH = GUICtrlCreateInput("", 50, 160, 200, 21, BitOR($ES_PASSWORD,$ES_AUTOHSCROLL))
$Button1 = GUICtrlCreateButton("Passwort ändern", 50, 208, 200, 25, 0)
$Altes_Passwort = GUICtrlCreateLabel("Altes Passwort:", 50, 16, 76, 17)
$Neues_Passwort = GUICtrlCreateLabel("Neues Passwort:", 50, 80, 84, 17)
$Neues_Passwort_Wiederholen = GUICtrlCreateLabel("Neues Passwort wiederholen:", 50, 136, 144, 17)
GUISetState(@SW_SHOW)
$Nutzer = "Jan" ; Ändert sich immer durch einen input
[/autoit][autoit][/autoit][autoit]While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
_PW()
EndSwitch
WEnd
Func _PW()
$Zaehlen = _FileCountLines(@ScriptDir & "\Test.txt")
For $i = 4 To $Zaehlen
$Zeile = FileReadLine(@ScriptDir & "\Test.txt", $i)
If StringInStr($Zeile, $Nutzer) Then
$PasswortZeile = FileReadLine(@ScriptDir & "\Test.txt", $i)
$Passwortdatei = StringSplit($PasswortZeile, " = ", 1)
$PW = $Passwortdatei[3]
$1 = GUICtrlRead($Altes_PW)
$2 = GUICtrlRead($Neues_PW)
$3 = GUICtrlRead($Neues_PW_WDH)
if $2 <> $3 Then MsgBox(0, "Fehler", "Die Wiederholung des neuen Passwortes ist falsch")
if $1 = $Passwortdatei[2] Then
$read = FileRead(@ScriptDir & "\Test.txt")
$read = StringReplace($read, $Nutzer&" = "&$1&" = ", $Nutzer&" = "&$2&" = ")
FileDelete(@ScriptDir & "\Test.txt")
$ret = FileWrite(@ScriptDir & "\Test.txt", $read)
if $ret = 1 MsgBox(0, "OK", "Neues Passwort wurde gesetzt")
Else
MsgBox(0, "Fehler", "Das alte Passwort wurde falsch eingegeben")
EndIf
Return
EndIf
Next
Return ""
EndFunc
Vielen Dank ich habe mir des jetzt viel Schwieriger vorgestelt.
MfG Tim
bitte.... bedenke allerdings, dass dieses keines falls eine ideallösung ist.... die passwortdatay wird jedes mal neu geschrieben.
das liegt hauptsächlich daran wie du an die sache rangegangen bist ... du solltest bei ini dateien einfach mit iniread / iniwrite arbeiten.
das macht es nicht nur einfacher, sondern auch schneller, wenn die datei größer ist.
WhiteLion Du kannst den Beitrag auch selbst löschen ;). Beitrag bearbeiten -> "Beitrag in den Papierkorb legen" markieren -> Absenden.