Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 05:38

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Brauche Hilfe bei ListView füllen mit 3 Dateien

Discussion on Brauche Hilfe bei ListView füllen mit 3 Dateien within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
Lindanus's Avatar
 
elite*gold: 100
Join Date: Apr 2015
Posts: 128
Received Thanks: 32
Brauche Hilfe bei ListView füllen mit 3 Dateien

Hallo,
ich brauche mal Hilfe bei meinem kleinen Programm.
Ich möchte gerne aus 3 Dateien verschiedene Einträge einlesen, die im Zusammenhang stehen und dann in einem ListView ausgeben.
Danach möchte es gerne exportieren.

Ich habe mal alles was ich habe in den Anhang gelegt.

Wenn mir einer dabei helfen könnte, dann würde ich mich riesig freuen.
Vielen dank !
Attached Files
File Type: rar disco_manager.rar (2.2 KB, 9 views)
Lindanus is offline  
Old 01/14/2019, 13:51   #2
 
elite*gold: 100
Join Date: Apr 2008
Posts: 860
Received Thanks: 1,465
Naja ... ne konkrete Frage wäre schon gut ...

Die Potato-Variante wäre stumpf bei Link.txt anzufangen. Geh jede Zeile durch und suche für jede Zeile die Platzhalter-Texte. Dazu schreibst du ne Funktion die einfach die Texte-Datei öffnet, nach dem Token sucht, den Text dazu rausholt, und wieder schließt. Mit der ID machst dus genauso. Sobald du einen Eintrag fertig hast, schreibst du ihn in das ListView.

Wie gesagt: Potato ... schnell ist das sicher nicht. Jenachdem wie viele hundert oder tausend Einträge du hast kann das schonmal ein paar Minuten dauern.
florian0 is offline  
Old 05/16/2019, 15:03   #3
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Würde bei kleineren Dateien immer dazu raten, diese einmalig einzulesen und anschließend aus dem Speicher heraus zu nutzen.

Die Arbeit direkt im Arbeitsspeicher beschleunigt die Aktionen mindestens um das 1000-Fache.

Hier ein Beispiel, wie man vorgehen könnte:
Code:
Global $data[1][5] = [[0]] ;[ListViewItem,ID,Objekt,Objekttitel,Objektbeschreibung]

GUICreate('GUI', 400, 240, Default, Default, 0x10C80000)
$guiListView = GUICtrlCreateListView('ID|Objekt|Objekttitel|Objektbeschreibung', 10,10,380,200)
$guiExportShort = GUICtrlCreateButton('Export Short', 10, 210, 190, 20)
$guiExportLong = GUICtrlCreateButton('Export Long', 200, 210, 190, 20)

Global $textDict = CreateTextDictionary(@ScriptDir & '\datei3 Text.txt')
Global $idDict = CreateIdDictionary(@ScriptDir & '\datei1 ID.txt')
FillListView(@ScriptDir & '\datei2 Link.txt')

While True
	Switch GUIGetMsg()
		Case -3
			Exit
		Case $guiExportShort
			$exportData = ''
			For $i=1 To $data[0][0]
				$exportData &= $data[$i][1]
				$exportData &= '|'
				$exportData &= $data[$i][3]
				$exportData &= @CRLF
			Next
			FileDelete(@ScriptDir & '\exportShort.txt')
			FileWrite(@ScriptDir & '\exportShort.txt', $exportData)
		Case $guiExportLong
			$exportData = ''
			For $i=1 To $data[0][0]
				$exportData &= $data[$i][1]
				$exportData &= '|'
				$exportData &= $data[$i][3]
				$exportData &= '|'
				$exportData &= $data[$i][4]
				$exportData &= @CRLF
			Next
			FileDelete(@ScriptDir & '\exportLong.txt')
			FileWrite(@ScriptDir & '\exportLong.txt', $exportData)
	EndSwitch
WEnd

Func AddToData($id,$object,$objectTitle,$objectDesc)
	$data[0][0]+=1
	ReDim $data[$data[0][0]+1][5]
	$data[$data[0][0]][0] = GUICtrlCreateListViewItem($id&'|'&$object&'|'&$objectTitle&'|'&$objectDesc,$guiListView)
	$data[$data[0][0]][1] = $id
	$data[$data[0][0]][2] = $object
	$data[$data[0][0]][3] = $objectTitle
	$data[$data[0][0]][4] = $objectDesc
EndFunc

Func CreateTextDictionary($file)
	Local $fileContent = FileRead($file)
	Local $dict = ObjCreate("Scripting.Dictionary")
	local $filtered = StringRegExp($fileContent, '(TEXT_[^	]+)	(.+)',3)
	For $i=0 To UBound($filtered)-1 Step 2
		$dict.Add($filtered[$i],$filtered[$i+1])
	Next
	Return $dict
EndFunc

Func CreateIdDictionary($file)
	Local $fileContent = FileRead($file)
	Local $dict = ObjCreate("Scripting.Dictionary")
	local $filtered = StringRegExp($fileContent, '\n#define ([^	]+)	(\d+)',3)
	For $i=0 To UBound($filtered)-1 Step 2
		$dict.Add($filtered[$i],$filtered[$i+1])
	Next
	Return $dict
EndFunc

Func FillListView($file)
	Local $fileContent = FileRead($file)
	Local $regEx = StringRegExp($fileContent,'\n([^	]+)	(TEXT_[^	]+)	(TEXT_[^	]+)', 3)
	For $i=0 To UBound($regEx)-1 Step 3
		AddToData($idDict.Item($regEx[$i]),$regEx[$i],$textDict.Item($regEx[$i+1]),$textDict.Item($regEx[$i+2]))
	Next
EndFunc
lolkop is offline  
Reply


Similar Threads Similar Threads
Brauche eure Hilfe Listview
05/16/2015 - .NET Languages - 1 Replies
Hallo liebes ElitePVP team, ich habe mal eine frage. Ich habe eine Listview mit ein paar einträgen, und ich möchte eine Datei hochladen, die die Spalte als Namen trägt. Also zb das ist meine listview. Colum1 Colum2 colum3 colum4
[Brauche Hilfe] Array in ListView
03/29/2015 - AutoIt - 3 Replies
Hey EPvP Ich wollte mal fragen, wieso dieser Code nicht geht: #cs -------------------------------------------------- -------------------------- AutoIt Version: 3.3.10.2 Author: myName Script Function:
Füllen Sie mich mit diesen Dateien! / Please fill me up with these files!
05/20/2013 - Browsergames - 2 Replies
Hallo! Bitte Shakes and Fidget Server hochzuladen alle Dateien für mich an einem Ort! Patch-Datei an, die meisten verwenden. Vielen Dank im Voraus! Eng: Hello! Please Shakes and fidget server upload all files one for me in one place! Patch file to use to most. Thank you in advance!
Brauche Dateien für EP1 Client!! Diese Mob dateien
11/14/2011 - Last Chaos - 4 Replies
€: YANNIKIN BITTE NICHT CLOSEN FUNKT WIEDER NICHT !!! Ja also brauche diese dateien von Paain´s EP1 Client die sind bei mir irgendwie immer beschädigt...:mad: Lange Rede kurzer Sinn Brauche diese Dateien : "mobAll_usa.lod" "mobname_usa.lod" Gibt natürlich Thx :D :handsdown: :handsdown:
[VB 2008]Listview Items mit Spalten -Brauche Hilfe
03/15/2010 - .NET Languages - 5 Replies
Hallo, ich habe ein Problem. Und zwar bin ich gerade ein Projekt am Coden, indem ich ein ListView Control mit 3 Spalten habe: "ID", "PW" und "Beschreibung" Die Texte die in die Spalten eingelesen werden sollen, stehen in einer Textdatei mit den Namen "Account1". Zeile 1 = ID Zeile 2 = PW Zeile 3 = Beschreibung



All times are GMT +2. The time now is 05:38.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.