Nabend, ich hab ma wieder ne kleine Frage
wie kann ich eine Zeile aus einer textdatei löschen?
in der Textdatei:
am ende sollte das dann so aussehn:
Hoffe jemand versteht was ich möchte und kann helfen
Nabend, ich hab ma wieder ne kleine Frage
wie kann ich eine Zeile aus einer textdatei löschen?
in der Textdatei:
am ende sollte das dann so aussehn:
Hoffe jemand versteht was ich möchte und kann helfen
wenn du weißt auf wie viele stellen das geschehen soll,dann:
winactivate("...txt-editor")
$delete = 12; (halt eine zahl)
while $delete > 0
Send ("{DEL}")
$delete= $delete - 1
Wend
aber warum hast du --->wieder<---- ne frage. das ist doch dein erster beitrag^^
greetz
Hi!
Ich würde die Datei mit _FileReadToArray einlesen, dann die ArrayElemente mit _ArrayDelete löschen und dann mit _FileWriteFromArray zurückschreiben (Performance von _ArrayDelete ist bei großen Arrays schlecht, dann müsste man evtl. die Elemente, die man behalten will in ein zweites Array übernehmen und dann das in die Datei schreiben).
peethebee
Vielleicht genügt auch schon ein einfacher StringReplace, wenn es nicht so viel ist ...
$sRepl = @LF & 'Server 2 ; IP 2' & @CR
$fhText = FileOpen('Text', 0)
$sText = FileRead($fhText)
$sNewText = StringReplace($sText, $sRepl)
FileWrite(@ScriptDir & '\TextNeu.txt', $sNewText)
FileClose($fhText)
Gruß
Greenhorn
so, da ich gerad das mit stringreplace und arrayzeug nich hinkrieg post ich erstma mein ganzes skript
#include <GUIConstants.au3>
#include <File.au3>
#include <String.au3>
#Include <GuiListView.au3>
#include <Array.au3>
$ini_realm_dir = @ScriptDir&"\Data\settings.txt"
$wtf = @ScriptDir&"\realmlist.wtf"
;im WoW Ordner
;If not FileExists("WoW.exe") Then
; MsgBox(48 , "Fehler" , "Bitte die exe in den WoW Ordner kopieren!")
; Exit
;EndIf
;config ob da oder nich, wird dann erstellt
If FileExists($ini_realm_dir) = 0 Then
_FileCreate($ini_realm_dir)
FileSetAttrib($ini_realm_dir,"+H")
FileWrite($ini_realm_dir,"Blackrock Revolution;Blackrock-Revolution.de"&@CRLF)
EndIf
#Region ### START Koda GUI section ###
$Form1_1 = GUICreate("RealmChanger", 409, 262, 200, 125)
$ServerList = GUICtrlCreateListView("Name | IP" , 80, 32, 321, 188)
_GUICtrlListView_SetColumnWidth ($ServerList, 0, 217)
_GUICtrlListView_SetColumnWidth ($ServerList, 1, 100)
loadserverlist()
$but_add = GUICtrlCreateButton("Add", 8, 232, 65, 20, 0)
$Name = GUICtrlCreateInput("Name", 80, 232, 214, 21)
$IP = GUICtrlCreateInput("IP", 300, 232, 100, 21)
$lbl_test = GUICtrlCreateLabel("Realm set to:", 8, 8, 66, 17)
$but_delete = GUICtrlCreateButton("Delete", 8, 192, 65, 17, 0)
$but_set = GUICtrlCreateButton("Set", 8, 152, 65, 17, 0)
$lbl_selected = GUICtrlCreateLabel("", 80, 8, 321, 17)
current_wtf()
$but_wdb = GUICtrlCreateButton("WDB leeren", 8, 36, 65, 17, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
;wtf auslesen xD und serverip in string speichern um anzeigen zu lassen
func current_wtf()
$open_wtf = FileOpen(@ScriptDir&"\realmlist.wtf",0)
FileRead($open_wtf,14)
$selected_realm = FileRead($open_wtf,2555)
FileClose($open_wtf)
GUICtrlSetData($lbl_selected,$selected_realm)
EndFunc
func loadserverlist()
GUIctrldelete($ServerList)
$ServerList = GUICtrlCreateListView("Name | IP" , 80, 32, 321, 188)
_GUICtrlListView_SetColumnWidth ($ServerList, 0, 217)
_GUICtrlListView_SetColumnWidth ($ServerList, 1, 100)
$line = 1
While 1
$read = FileReadLine($ini_realm_dir,$line)
If @error = -1 Then ExitLoop
$fill = ""
$line = $line + 1
$split = StringSplit($read,";")
For $n = 1 to 2
$fill = $fill & $split[$n] & "|"
Next
GUICtrlCreateListViewItem($fill,$ServerList)
WEnd
EndFunc
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $but_add
$blaaaaaa = 0
$str_name = GUICtrlRead($Name)
$str_ip = GUICtrlRead($IP)
If $str_name = "" or $str_name = "Name" Then
MsgBox(48, "Error", "Bitte Namen eingeben")
$blaaaaaa = 1
EndIf
If $str_ip = "" or $str_ip = "IP" Then
MsgBox(48, "Error", "Bitte IP eingeben")
$blaaaaaa = 1
EndIf
If $blaaaaaa = 0 Then
FileWrite($ini_realm_dir,$str_name&";"&$str_ip&@CRLF)
MsgBox(64,"Erfolg", "Server gespeichert!")
loadserverlist()
EndIf
Case $GUI_EVENT_CLOSE
Exit
Case $but_set
$list_selected = _GUICtrlListView_GetNextItem($ServerList)
$selected = _GUICtrlListView_GetItemText($ServerList,$list_selected, 1)
_FileWriteToLine($wtf,1,"set realmlist "&$selected,1)
current_wtf()
MsgBox(64,"Fertig","realmlist geändert!")
Case $but_wdb
$result = DirRemove(@ScriptDir&"\Cache\WDB\", 1)
If $result = 1 Then
MsgBox(64 , "Erfolg" , "WDB Ordner wurde erfolgreich gelöscht!" )
Else
MsgBox(64 , "Fehler" , "Der Ordner konnte nicht gelöscht werden" & @CRLF & "Möglicherweise ist er schon leer" )
EndIf
Case $but_delete
If Not IsDeclared("iMsgBoxAnswer") Then Local $iMsgBoxAnswer
$iMsgBoxAnswer = MsgBox(292,"Bestätigung","Server wirklich aus der Liste löschen?")
Select
Case $iMsgBoxAnswer = 6 ;Yes
;hier müsste dann dieses zeug von wegen löschen hin
[/autoit] [autoit][/autoit] [autoit]loadserverlist()
EndSelect
EndSwitch
WEnd
ja, is nich gerad das sauberste und schönste, aber ich kapiers und bis auf den punkt mit dem löschen geht auch alles soweit ich weiß.
Hoffe jemand kann mir gerad ma einfach den löschen abschnitt so schreiben das es geht und ich lern dann daraus
(ach ja, >wieder< ne frage weil ich vorher in shoutbox gefragt hab)
Ist die 'settings.txt' von dir selbst erstellt oder wird sie von WoW mitgebracht ?
Gruß
Greenhorn
Hi,
die Frage ist, was ist dein Kriterium um zu löschen?
Zeilenummer?
Text?
Textanfang?
...
Mega
die settings.txt soll eigentlich erstellt werden wenn nich vorhaden und is von dem script, NICHT von wow
ach ja xD sry, das hab ich aus versehn rausgenommen -.- : ich mein das löschen, was im ListView ausgewählt wurde dann aus der text löschen, also wenn das 3te angewählt ist dann aus der text die 3te zeile löschen. dann auch das "enter" damit die 4te in die 3te rutscht und das programm nicht abstürzt
Zitatdie settings.txt soll eigentlich erstellt werden wenn nich vorhaden und is von dem script, NICHT von wow
Dann speicher deine Werte doch einfach in eine settings.ini !
Die kannst Du viel besser handlen als eine .txt, da kannst Du dann nach Herzenslust löschen, ändern, neu erstellen ...
Gruß
Greenhorn
hmm, k. das problem: ich wüsste jetzt auch nich genau wie ich das als ini machen soll, darum hab ich das gerad als txt
Dann poste doch mal ein Beispiel deiner settings.txt, dann sehen wir uns das mal an ...
Gruß
süß nen wow realmist changer ich hab mal vor nem jahr einen gemacht. ICh poste mal den Source^^. Aber da konnte ich ncht so gut autoit naja hier der Source:^^
#include <GUIConstants.au3>
#include <GuiList.au3>
;==> Realmlist
$File1 = FileOpen("Files\Path.ini",0)
$File2 = FileReadLine($File1, 4)
$File3 = FileOpen($File2,0)
$File4 = FileReadLine($File3, 1)
;==> WoW.exe
$File5 = FileReadLine($File1, 2)
;==> Manuelle Realmliste
$Listeoeffnen = FileOpen("Files\Liste.ini",0)
$Liste = FileRead($Listeoeffnen)
;==> GUI Buttons...
$GUI = GUICreate("WoW Realmlist Changer", 416, 208)
GuiSetBkColor(0x0)
$GroupRealmlist = GUICtrlCreateGroup("Realmlists", 8, 8, 305, 185)
$Aktuelle = GUICtrlCreateLabel("Aktuelle Realmlist:", 110,25,180,20)
$Color = FileOpen("Files\Color.ini",0)
$ColorGet = FileReadLine($Color, 2)
GuiSetBkColor($ColorGet)
GUICtrlSetColor($Aktuelle,0x0046D5)
$Realms = GUICtrlCreateLabel("Verfügbare Realms:", 110,85,180,20)
GUICtrlSetColor($Realms,0x0046D5)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Start = GUICtrlCreateButton("Start", 328, 24, 73, 33,0)
GuiCtrlSetBkColor(-1,$ColorGet)
$Selecting = GUICtrlCreateButton("Select", 328, 64, 73, 33, 0)
GuiCtrlSetBkColor(-1,$ColorGet)
$Exit = GUICtrlCreateButton("Exit", 328, 144, 73, 33, 0)
GuiCtrlSetBkColor(-1,$ColorGet)
$About = GUICtrlCreateButton("About", 328, 104, 73, 33, 0)
GuiCtrlSetBkColor(-1,$ColorGet)
$Group2 = GUICtrlCreateGroup("Menü", 320, 8, 89, 185)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$AktuelleRealmlist = GUICtrlCreateInput($File4, 16, 40, 281, 21)
GUICtrlSetState ($AktuelleRealmlist, $GUI_DISABLE)
;==> GUI Select..
$WoWListe = GuiCtrlCreateList("", 16, 100, 281, 90)
GuiCtrlSetData($WoWListe, $Liste)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Exit
Exit
Case $About
Call ("About")
Case $Start
Call ("Start")
Case $Selecting
Call ("Selecting")
EndSwitch
WEnd
;==> Funtkionen
Func About()
MsgBox(0,"WoW Realmlist Changer","Created by I3iLLiG." & @Crlf & @Crlf & "i3illig@gmail.com.")
EndFunc
Func Start()
Run($File5)
ToolTip("Have Fun")
Sleep(2000)
Exit
EndFunc
Func Selecting()
$ret = _GUICtrlListGetSelItemsText ($WoWListe)
If (Not IsArray($ret)) Then
MsgBox(16, "Error", "Maybe nothing selected.")
Else
For $i = 1 To $ret[0]
FileOpen($File2,2)
FileWrite($File2,$ret[$i])
;MsgBox(0,"WoW Realmlist Changer", "Realmlist erfolgreich geändert.")
GuiCtrlDelete($AktuelleRealmlist)
$File3 = FileOpen($File2,0)
$File4 = FileReadLine($File3, 1)
GUICtrlCreateInput($File4, 16, 40, 281, 21)
GUICtrlSetState (-1, $GUI_DISABLE)
Next
EndIf
EndFunc
Man brauch im UnterOrnder "Files" einige Dateien (kann man aus dem source code lesen) aber hier nochmal alles inner rar datei.
@I3iLLiG: bei deinem kann man aber soweit ich das sehe keine Server über das Prog hinzufügen / löschen sondern muss dies über die ini manuell machen...?!
zudem ist es auch nur ne guictrlList und nicht ListView, da man wie ich das habe 2 werte pro server hat (<-- weiß nich ob das so viel anderes ist mit ini-Eintrag)
hey, THX! ich habs jetz endlich mit ini hinbekommen hab mir in den hilfescripts ma das mit inireadsection und dieser for-Schleife und so
Na siehste, ... geht doch !
Gruß
Greenhorn
Hi,
ich habe das mal für jemanden geschrieben. Da habe ich einfach die einzelnen Dateien mit den unterschiedlichen Server abgespeichert.
Und wenn wann dann einen Server starten wollte, dann wurde die Datei einfach über die "Original" drüber kopiert fertig.
#include<GUIConstantsEx.au3>
#include<StaticConstants.au3>
#include<WindowsConstants.au3>
; WOW Serververwaltung
Opt("TrayIconHide", 1)
Opt("GUICloseOnESC", 1)
FileInstall('C:\Downloads\AutoIt-Skripte\WOW_bg.bmp', @TempDir & '\wow_bg.bmp', 1)
FileInstall('C:\Downloads\AutoIt-Skripte\1.gif', @TempDir & '\1.gif', 1)
FileInstall('C:\Downloads\AutoIt-Skripte\2.gif', @TempDir & '\2.gif', 1)
FileInstall('C:\Downloads\AutoIt-Skripte\3.gif', @TempDir & '\3.gif', 1)
GUICreate("Martin Schreiber WOW Serververwaltung", 346, 266, @DesktopWidth/2-170, @DesktopHeight/2-130, $WS_POPUP)
GUICtrlCreatePic(@TempDir & '\wow_bg.bmp', 0, 0, 346, 266)
GUICtrlSetState(-1, $GUI_DISABLE)
$nexis_B = GUICtrlCreatePic(@TempDir & '\1.gif', 16, 32, 303, 45, $SS_NOTIFY)
$server2_B = GUICtrlCreatePic(@TempDir & '\2.gif', 16, 102, 303, 45, $SS_NOTIFY)
$ilidan_B = GUICtrlCreatePic(@TempDir & '\3.gif', 16, 172, 303, 45, $SS_NOTIFY)
GUISetState(@SW_SHOW)
; reamllist.wtf, reamllist_1.wtf, reamllist_2.wtf, reamllist_3.wtf
[/autoit] [autoit][/autoit] [autoit]Global $voice = ObjCreate("Sapi.SpVoice")
[/autoit] [autoit][/autoit] [autoit]Speak('Welcome to World of Warcraft - Serverstarrter by XXX ', 2.5, 100)
[/autoit] [autoit][/autoit] [autoit]While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $nexis_B
_perpareServer(1)
Case $server2_B
_perpareServer(2)
Case $ilidan_B
_perpareServer(3)
EndSwitch
WEnd
Func _perpareServer($parameter)
; exe Datei in den WOW Ordner
Local $server_A[4] = ['4', 'Nexis', 'W o W', 'Ilidan']
If FileCopy(@ScriptDir & '\Server\reamlist' & $parameter & '.wtf', @ScriptDir & '\reamlist.wtf', 1) = 0 Then
;Speak('Copy failed!!!', 1, 100)
;Return -1
EndIf
Speak('World of Warcraft server prepared!', 1, 100)
Sleep(300)
Speak('Server ' & $server_A[$parameter] & ' chosen!', 1, 100)
EndFunc ;==>_perpareServer
Func Speak($Text, $Rate, $Vol)
$voice.Rate = $Rate
$voice.Volume = $Vol
$voice.Speak ($Text)
EndFunc ;==>Speak
Mega