Hallo,
ich habe ein kleine Anwendung geschrieben, die meinen Kollegen und mir das Arbeiten leichter machen soll. Wir verwalten ca. 200 PCs und nutzen eine Remoteanwendung, um auf die PCs zuzugreifen. Da wir aufgund dieser Anzahl eine immer aktuelle Tabelle mit den IP der Mitarbeiter brauchen, habe ich folgende Mimik entwickelt.
Bei jeder Anmeldung eines Users an den Domain-Controller wird eine Anwendung gestartet, die die IP ausliest und diese mir in eine INI schreibt, welche sich in einem öffentlichen Verzeichniss auf einem Samba befindet.
Beispielaufbau:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| [amayer] IP=192.168.1.230 PC-Name=CLIENT30 Zeit=08:03:31 Datum=19.01.2006 IE-Version=6.0.2800.1106 OS-Version=Windows 2000 Service Pack 4 Phone=181 |
Diese INI wird vom eigentlichen Programm beim Start meines Rechners ausgelesen. Kleine Funktionen ermöglichen mir es, aus dem Programm herraus, andere administrative Anwendungen zu startetn, welche die IP als Parameter übergeben bekommen. Das nur am Rande.
Hier die Source zum auslesen der Daten vom eigentlichen Programm.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58:
| try config := TIniFile.Create('\\192.168.1.8\IP\config.ini');
config.ReadSections(ListBox1.Items);
MainForm.Show; for i := 0 to ListBox1.Count - 1 do begin
MainForm.Update; MainForm.Repaint; MainForm.Refresh; Eintrag := ListBox1.Items.Strings[i];
IP := config.ReadString(Eintrag, 'IP', ''); IPs[i] := IP; PC := config.ReadString(Eintrag, 'PC-Name', ''); PCs[i] := PC; Time := config.ReadString(Eintrag, 'Zeit', ''); Zeits[i] := Time; Date := config.ReadString(Eintrag, 'Datum', ''); Datums[i] := Date; Phone := config.ReadString(Eintrag, 'Phone', ''); Phones[i] := Phone; IEV := config.ReadString(Eintrag, 'IE-Version', ''); IEVs[i] := IEV; Win := config.ReadString(Eintrag, 'OS-Version', ''); Wins[i] := Win;
with ListView1 do begin ListItem := Items.Add; Listitem.Caption := Eintrag;
ListItem.SubItems.Add(IPs[i]); ListItem.SubItems.Add(PCs[i]); ListItem.SubItems.Add(Zeits[i]); ListItem.SubItems.Add(Datums[i]); ListItem.SubItems.Add(Phones[i]); ListItem.SubItems.Add(IEVS[i]); ListItem.SubItems.Add(Wins[i]);
end;
end; config.Free; |
Ich betone, dass die Zweckdienlichkeit größeren Wert hat, als die professionalität der Source. Jedoch komme ich nun zum Problem. Mein Rechner baut die Inhalte des ListView langsamer auf, als der Rechner meines Kollegen. Warum?
Die Laptops sind nahezu Leistungsgleich, hängen am selben Netz, Kabel wurden auch schon getauscht.
Ich verlange ja nicht viel von meinen Laptop. Das ist ja keine anspruchsvolle Aufgabe für den Rechner. Also warum geht das so langsam? Habt Ihr eine Idee??