Hallo ich habe folgendes Problem wo ich nicht weiterkomme.
Ich habe eine Gui mit einen Grid (im Prinzip 3) aber wenn ich das Grid aktualisiere
in dem Fall wird eine Textdatei (Ini) eingelesen nimmt die Arbeitsspeichernutzung um ~1MB zu .
wenn ich den Vorgang so oft wiederhole das ich in den 20-25 MB Bereich komme, dann bekomme ich Fehler in der Darstellung/ Nutzung.
Es scheint das ihm nicht mehr als 25MB zugestanden werden, muss auch nicht erstens ruft das Programm keiner sooft hintereinander auf
und die Ursache ist ja die, das irgendwie der Speicher nicht freigegeben wird. Ich denke das kann man lösen.
Hoffentlich auch ohne Script da ich es für mich und meine Arbeitskollegen gescriptet habe und halt evtl. Interna enthält,
will ich erst bereitstellen wenn alles läuft und dahingehend von mir noch intensiver durchgehen wurde.
Genutzt wird übrigens LV_Format_include.au3 weitere includes:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListBox.au3>
#include <GuiListView.au3>
#include <File.au3>
#include <array.au3>
#include <ComboConstants.au3> ;für Combobox disablen
#include <C:\Autoit_SVN\UDF\MS-SQL.au3>
Die 3 Grids sind vom Aufbau gleich Anzahl Spalten usw. und werden so zusammengefasst:
[autoit]Local $aHWnd_Tab1[3] = [$hListView_DSN_DB_Tab1,$hListView_System_Tab1,$hListView_User_Tab1]
[/autoit]So lese ich die Datei ein und dann 2 ineinander verschachtelte Case Anweisungen
[autoit]Func _Fill_Server_DSN_Listbox($DB_Filter) ; temporäre Ini Datei für DB Grid auslesen
_Disable_Tab1(0)
_GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($ListView_DSN_DB_Tab1))
$DSN_Create = GUICtrlRead($Combo_DSN_Name_Tab1)
;~ $cnt_nr = 0
$cnt_dbserver=IniReadSectionNames(@TempDir & "\tmp_server.ini")
For $i_cnt = 1 to UBound($cnt_dbserver,1) -1
$cnt_dbname=IniReadSection(@TempDir & "\tmp_server.ini",$cnt_dbserver[$i_cnt])
For $j_cnt = 1 to UBound($cnt_dbname,1) -1
[/autoit][autoit][/autoit][autoit]Select
Case $DSN_Create = "DSN = [Datenbank]" ;Or $DSN_Create = ''
$DSN_Name = $cnt_dbname[$j_cnt][0]
Case $DSN_Create = "DSN = [Datenbank]-[Server]"
.....
Endselect
Weiter unten noch einmal case für den SuchFilter
Select
Case $DB_Filter = "Alle Datenbanken" ;Or $DB_Filter = ""
_GUICtrlListView_AddOrIns_Item($hListView_DSN_DB_Tab1, $DSN_Name & "|" & $cnt_dbserver[$i_cnt] & "|" & $cnt_dbname[$j_cnt][0] & "|" & $cnt_dbname[$j_cnt][1])
Case $DB_Filter = "DB* (ASP Kunden)"
If StringLeft($cnt_dbname[$j_cnt][0],2) = "DB" Then _
_GUICtrlListView_AddOrIns_Item($hListView_DSN_DB_Tab1, $DSN_Name & "|" & $cnt_dbserver[$i_cnt] & "|" & $cnt_dbname[$j_cnt][0] & "|" & $cnt_dbname[$j_cnt][1])
......
EndSelect
Next
Next
_Mark_DSN($ListView_DSN_DB_Tab1)
endfunc()
Func _Mark_DSN($Target_Listbox) ; Non Latin Collations markieren
If $Target_Listbox = $ListView_DSN_DB_Tab1 Then
$Mark_Col = 3
Else
$Mark_Col = 4
EndIf
For $i = 0 To _GUICtrlListView_GetItemCount($Target_Listbox) -1
$Test_Col = _GUICtrlListView_GetItemText($Target_Listbox, $i, $Mark_Col)
If Not StringInStr($Test_Col,'LATIN') And $Test_Col <> '' And $Test_Col <> "SQL2000" And $Test_Col <> "keine Beschreibung" Then
_GUICtrlListView_FormattingCell($Target_Listbox, $i, $Mark_Col, 0x00FFFF, -1, -1, 300);, 'Times New Roman')
EndIf
Next
For $i = 0 To _GUICtrlListView_GetItemCount($Target_Listbox) -1
If _GUICtrlListView_GetItemText($Target_Listbox, $i, 4) = 'Offline' Then
_GUICtrlListView_FormattingCell($Target_Listbox, $i, 4, 0xff0000, -1, -1, 300);, 'Times New Roman')
EndIf
Next
_Disable_Tab1(1)
EndFunc
Mit _Disable_Tab1(0/1) werden die Buttons kurzzeitig deaktiviert.
Was mach ich falsch?
Gruß Dietmar