|
You last visited: Today at 12:45
Advertisement
Autoit Daten aus Datei Lesen
Discussion on Autoit Daten aus Datei Lesen within the AutoIt forum part of the Coders Den category.
06/27/2009, 22:13
|
#1
|
elite*gold: 0
Join Date: Sep 2007
Posts: 82
Received Thanks: 21
|
Autoit Daten aus Datei Lesen
Hallo,
ich hab mal eine Frage.
Ich habe eine Datei an die 300kb groß. Es sind alles einträge die mit einem ";" abgetrennt sind. Sie stehen alle in einer Line zusammen.
Quote:
$file = FileOpen("bla", 0)
$xy = StringSplit(FileReadLine($file), ";")
FileClose($file)
|
So komm ich aber nicht an alle Einträge herran, weil die Variable einfach zu groß wird.
Wenn Jemand einen Rat weiß wäre ich sehr dankbar.
Mfg Dung3on
|
|
|
06/27/2009, 22:24
|
#2
|
elite*gold: 2
Join Date: Mar 2008
Posts: 8,541
Received Thanks: 4,539
|
mit UBound kannst du die größe/dimension des arrays rausfinden und dann einfach mit ner for schleife entsprechend abarbeiten
|
|
|
06/27/2009, 22:33
|
#3
|
elite*gold: 0
Join Date: Sep 2007
Posts: 82
Received Thanks: 21
|
Das Problem ist aber, dass nicht alle einträge ( Also Arrays ) In die Variable gehen weils zu viele sind. Er nimmt nur ca. 6000 auf obwohl es über 15000 sein müssten.
Es müsste eine Möglichkeit geben die Daten i-wie in 1000er Päckchen auszulesen, ohne die Datei vorher komplett in eine Variable als String bzw. als Arrays, zu packen.
Sonst wüsst ich nicht wie...
|
|
|
06/28/2009, 09:51
|
#4
|
elite*gold: 0
Join Date: Jul 2005
Posts: 12,457
Received Thanks: 2,961
|
#moved zum autoit bereich
|
|
|
06/28/2009, 10:49
|
#5
|
elite*gold: 2
Join Date: Mar 2008
Posts: 8,541
Received Thanks: 4,539
|
mhh für mich sieht das ziemlich nach nem programm aus was ne password liste abarbeitet um accounts zu klauen, ich hab schon nen paar ideen wie du es machen könntest aber sag bitte erstma was das werden soll oder poste am besten gleich den ganzen sourcecode
|
|
|
06/28/2009, 17:10
|
#6
|
elite*gold: 0
Join Date: Sep 2007
Posts: 82
Received Thanks: 21
|
Also mit dem Sourcecode wirds was schwer, hat über 1000 Zeilen 
Aber ich sag euch wofür ich das brauche. Suchfunktion
Quote:
$file = FileOpen("libraries/stadt.txt", 0)
$stadtkom = StringSplit(FileReadLine($file), ";")
FileClose($file)
$file1 = FileOpen("libraries/groesse.txt", 0)
$groessekom = StringSplit(FileReadLine($file1), ";")
FileClose($file1)
$file2 = FileOpen("libraries/spieler.txt", 0)
$spielerkom = StringSplit(FileReadLine($file2), ";")
FileClose($file2)
$file3 = FileOpen("libraries/punkte.txt", 0)
$punktekom = StringSplit(FileReadLine($file3), ";")
FileClose($file3)
$file4 = FileOpen("libraries/allianz.txt", 0)
$allianzkom = StringSplit(FileReadLine($file4), ";")
FileClose($file4)
$file5 = FileOpen("libraries/coord.txt", 0)
$coordkom = StringSplit(FileReadLine($file5), ";")
FileClose($file5)
$file6 = FileOpen("libraries/general.txt", 0)
$generalkom = StringSplit(FileReadLine($file6), ";")
FileClose($file6)
$count = Ubound($generalkom)
Dim $ListView5[$count + 1]
$Form1 = GUICreate("Form1", 754, 538, 194, 125)
$Label1 = GUICtrlCreateLabel("Suche", 24, 24, 51, 17)
$Feld = GUICtrlCreateCombo("", 24, 48, 97, 25)
GUICtrlSetData(-1, "Spieler|Stadt|Größe|Allianz|Punkte|Insel|General" )
$operatorcom = GUICtrlCreateCombo("", 128, 48, 98, 25)
GUICtrlSetData(-1, "gleich|größer|kleiner|nicht gleich|")
$wertinput = GUICtrlCreateInput("", 232, 48, 98, 21)
$newsearch = GUICtrlCreateButton("neue Suche", 352, 48, 90, 25, 0)
$search = GUICtrlCreateButton("weiter suchen", 440, 48, 90, 25, 0)
$progressbar2 = GUICtrlCreateProgress(24, 75, 200, 20)
$Label3 = GUICtrlCreateLabel("Ergebnisse", 64, 104, 56, 17)
$ListView1 = GUICtrlCreateListView("Spieler|Stadt|Größe|Allianz |Punkte|Insel|General", 24, 136, 705, 377)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 95)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 95)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 95)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 3, 95)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 4, 95)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 5, 95)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 5, 95)
$i = 1;
While $i < $count
$i = $i + 1
$total = $total + 1;
WEnd
$Label2 = GUICtrlCreateLabel($total, 24, 104, 36, 17)
;''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''
Dim $ListView5[$total + 2]
$count = UBound($generalkom)
$i = 2;
While $i < $count
$ListView5[$i] = GUICtrlCreateListViewItem($spielerkom[$i] & "|" & $stadtkom[$i] & "|" & $groessekom[$i] & "|" & $allianzkom[$i] & "|" & $punktekom[$i] & "|" & $coordkom[$i] & "|" & $generalkom[$i], $ListView1)
$i = $i + 1
WEnd
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUISetState(@SW_SHOW)
|
So
|
|
|
06/28/2009, 23:38
|
#7
|
elite*gold: 20
Join Date: Jan 2008
Posts: 2,632
Received Thanks: 8,492
|
warum nicht bis line 1000 lesen next array wieder 1000 lines abarbeiten , next array
sonst attach mal die txt file ,dann fuchtel ich was rum
|
|
|
06/29/2009, 00:05
|
#8
|
elite*gold: 0
Join Date: Sep 2007
Posts: 82
Received Thanks: 21
|
Ja das mit den Lines dachte ich auch zuerst, aber das Format des Contents sieht so aus ";blalbal;sdfsdf;sdfsdf;sdfsdf;sdfsdf;sdfs"
Wenn ich das in den Dreamweaver schmeisse und Search Replace mache dann braucht der 2 std. bei einer Datei und ich hab 6 ,die wöchentlich aktualisiert werden^^ (AMD2 6000+)
|
|
|
06/29/2009, 00:11
|
#9
|
elite*gold: 20
Join Date: Feb 2007
Posts: 3,080
Received Thanks: 4,294
|
hm ich kann das problem irgendwie nicht nachvollziehen, ich arbeite teils mit sehr großen wordlisten bis 700 mb und habe keine probleme mit dem bearbeiten der files mit autoit.
am besten du hängst so ein file wirklich mal an.
edit: mir ist grad aufgefallen das du wegen deinem stringsplit eh jede zeile einzeln aufrufen musst, dann machs einfach so, dauert aber ewig, da jede zeile wie gesagt eingelesen werden muss. bei mir braucht er aufm lappi ca 10 sek für 1000 zeilen.
Code:
#Include <Array.au3>
#Include <file.au3>
$file = "1.txt"
$anzahl = _FileCountLines($file)
$line =1
for $i = 1 to $anzahl
$xy=StringSplit(FileReadLine($file, $line), "6",2)
$line +=1
FileWriteline("ausgabe.txt",$xy[0])
$rest = $anzahl - $i
ToolTip($rest & " lines left")
Next
|
|
|
06/29/2009, 01:27
|
#10
|
elite*gold: 0
Join Date: Aug 2006
Posts: 505
Received Thanks: 89
|
Sehe ich das richtig, dass du die Daten in riesigen Textdateien speicherst?
Schonmal was von Datenbanken gehört? MySQL z.B.? Das wäre um einiges schneller, und du hast viel mehr Möglichkeiten gezielt Daten herauszufiltern.
|
|
|
06/29/2009, 11:33
|
#11
|
elite*gold: 0
Join Date: Sep 2007
Posts: 82
Received Thanks: 21
|
Okay Kknb, das Problem ist jedoch immernoch, dass es Nur eine Line gibt.
Also der Komplette Inhalt ist in einer Zeile.
MySql ist interessant, habe ich noch nie gemacht bei Autoit ist das wie in php? Kann ich Offline Mysql Datenbanken erstellen, ohne ein Extra Programm wie xampp zu nutzen?
|
|
|
06/29/2009, 12:50
|
#12
|
elite*gold: 15
Join Date: Nov 2005
Posts: 13,021
Received Thanks: 5,324
|
um eine mysql datenbank zu erstellen, brauchst du mysql... du brauchst nicht unbedingt xampp da dort auch webserver etc drin sind. einfach nur mysql würd reichen, aber dann musste auch server anmachen etc.
|
|
|
06/30/2009, 02:06
|
#13
|
elite*gold: 20
Join Date: Jan 2008
Posts: 2,632
Received Thanks: 8,492
|
hmm, ich weis zwar nicht warum, aber bei mir splittet er die 1. zeile nach ner bestimmten anzahl von zeichen im notepad
die file ist dann 1 kb groß
häng hier wirklich mal deine file an, denn wenns in eine zeile passt, sollte das ein kinderspiel sein oO
|
|
|
06/30/2009, 23:30
|
#14
|
elite*gold: 0
Join Date: Sep 2007
Posts: 82
Received Thanks: 21
|
Okay ich habe das Problem ersteinmal gelöst, jedoch ist es recht langsam.
Ich habe in den txt Files jetzt das Format mit Umbrüchen. Also filereadline...
Quote:
$line = 1;
$counter1 = _FileCountLines("libraries/stadt.txt")
$Form1 = GUICreate("Form1", 754, 538, 194, 125)
$Label1 = GUICtrlCreateLabel("Suche", 24, 24, 51, 17)
$Feld = GUICtrlCreateCombo("", 24, 48, 97, 25)
GUICtrlSetData(-1, "Spieler|Stadt|Größe|Allianz|Punkte|Insel|General" )
$operatorcom = GUICtrlCreateCombo("", 128, 48, 98, 25)
GUICtrlSetData(-1, "gleich|größer|kleiner|nicht gleich|")
$wertinput = GUICtrlCreateInput("", 232, 48, 98, 21)
$newsearch = GUICtrlCreateButton("neue Suche", 352, 48, 90, 25, 0)
$search = GUICtrlCreateButton("weiter suchen", 440, 48, 90, 25, 0)
$progressbar2 = GUICtrlCreateProgress(24, 75, 200, 20)
$Label3 = GUICtrlCreateLabel("Ergebnisse", 64, 104, 56, 17)
$Label2 = GUICtrlCreateLabel($counter1, 24, 104, 36, 17)
$ListView1 = GUICtrlCreateListView("Spieler|Stadt|Größe|Allianz |Punkte|Insel|General", 24, 136, 705, 377)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 95)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 95)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 95)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 3, 95)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 4, 95)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 5, 95)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 5, 95)
$file2 = FileOpen("libraries/spieler.txt", 0)
$file1 = FileOpen("libraries/groesse.txt", 0)
$file3 = FileOpen("libraries/punkte.txt", 0)
$file4 = FileOpen("libraries/allianz.txt", 0)
$file5 = FileOpen("libraries/coord.txt", 0)
$file6 = FileOpen("libraries/general.txt", 0)
$file = FileOpen("libraries/stadt.txt", 0)
GUISetState(@SW_SHOW)
While $line <= $counter1
GUICtrlCreateListViewItem(FileReadLine($file2,$lin e) & "|" & FileReadLine($file,$line) & "|" & FileReadLine($file1,$line) & "|" & FileReadLine($file4,$line) & "|" & FileReadLine($file3,$line) & "|" & FileReadLine($file5,$line) & "|" & FileReadLine($file6,$line), $ListView1)
$line = $line + 1
WEnd
|
Hat jemand vll. eine Idee wie das schneller gehen könnte? Habe ca. 30.000 Einträge pro File. der braucht bestimmt 10 oder mehr minuten.
Außerdem kann ich "GUICtrlCreateListViewItem()" keiner Variable zuweisen, weil die variablen das nicht packen. Ich möchte jedoch gerne, dass man bestimmte einträge in eine Liste Kopieren kann. Ist das möglich wenn das Listviewitem keinen Namen hat?
Sorry wenn ich so viele Fragen habe, bin nicht so erfahren im Umgang mit so großen Datenmengen.
Bitte um Rat
|
|
|
07/01/2009, 02:10
|
#15
|
elite*gold: 20
Join Date: Jan 2008
Posts: 2,632
Received Thanks: 8,492
|
kannst du wirklich keine test files mal in eine *.rar datei packen und hochladen?
dann wäre dir schneller geholfen als du villeicht gedacht hättest
|
|
|
 |
|
Similar Threads
|
cs viewer kann net meine dds datei lesen! )=
07/04/2010 - Flyff Private Server - 0 Replies
hi erstmal, ich habe ein problem... ich habe eigenes cs gemacht, aber wenn ich es angucken will, wird es in weiß angezeigt... ich habe die dds in alle ordner kopiert... warum ist das so? wie kann man das beheben? pls antwortet schnell =)
mfg Lamoir
|
[VB.NET][TuT] Sequenziell eine Datei lesen und schreiben
02/26/2010 - Coding Tutorials - 0 Replies
Die Projekt Datei ist schon mit Visual Basic 2008 benutzbar.
================================================= ===
In diesem Tutorial zeige ich euch, wie wir aus einer datei lesen und diese schreiben.
===================================
===================================
•Was wir brauchen
- Label1 (BackColor = Control, BorderStyle = Fixed3D, AutoSize = False)
- Label2 (Text = Nr)
|
.Bin Datei lesen?
09/30/2009 - General Coding - 14 Replies
Hallo!
Ich habe ein Problem und zwar das ich habe eine .bin datei wenn ich diese mit Iso Buster öffne erhalte ich zwar die Datei und kann sie lesen aber da sind dann sehr viele zeichen!
Kann mri vllt wer helfen?
|
All times are GMT +1. The time now is 12:51.
|
|