Zitat von
taveuni:
Ab dem Zeitpunkt wenn ein Icon geladen wird reagiert dein Programm sehr träge.
(Keine Rückmeldung für ca. 10-15 Sekunden).
Insbesondere das laden selbst, danach ein Klick auf einen anderen Node im Treeview.
Ebenfalls das speichern und laden der Ini (wobei dies verschmerzbar ist).
Ist das nur bei mir so?
Also bei mir merke ich keinerlei Verzögerung, gegenüber der vorhergehenden Version.
Obwohl zwar das Icon intern als Text verwerwaltet wird, sollte es recht schnell geehn.
- beim Speichern/Erstellen der RC wird direkt der Text eingefügt.
- und ansonsten wird nur beim Einfügen des Icons und beim Laden der INI eine String<>Icon-Umwandlung vorgenommen (das Icon wird ja in viele Integer zerlegt, bzw. daraus zusammengesetzt)
- beim Umschalten der TreeNodes sollte dieses aber keinerlei Auswirkungen zeigen, da dort absolut nix mit dem Icon in Berührung kommt.
Mit welchem System arbeitest du denn? (welches Windows, wieviel
RAM, CPU, ...)
Leider läßt sich der aktuelle Code nicht mehr direkt mit Delphi 2007 debuggen/kompilieren, sonst hättest du eventuell mal versuchen können selber nachzusehn, wo es hängt.
Zitat von
taveuni:
Dann das speichern der *.rc Datei: Es wird ein Name verlangt beim Speichern.
In der *.cmd Datei wird dann aber immer Manifest.rc gesucht. Das war früher anders?
Ups, da hat die geänderte Fehlerbehandlung böse zugeschlagen.
Beim Zuweisen des Dateinamens, z.B. an Edit5.Text, werden über das OnChange die Dateien (mit den neuen Dateinamen) neu erstellt.
Nun hatte ich jetzt diese Zuweisung ans Ende verschoben, damit bei einem Fehler der alte Namen erhalten bleibt.
(z.B.
Exception durch fehlende Schreibrechte beim Speichern)
Heißt also, nun wurde erst gespeichert und dann erst der Name geändert.
Die Kurzfassung:
Delphi-Quellcode:
// alt
If SaveDialog1.Execute Then Begin
Edit5.Text := SaveDialog1.Filename;
Memo1.Lines.SaveToFile(Edit5.Text);
End;
// neuer (das mit dem Fehler)
If SaveDialog1.Execute Then Begin
Memo1.Lines.SaveToFile(SaveDialog1.Filename);
Edit5.Text := SaveDialog1.Filename;
End;
// jetzt sieht es etwa so aus :)
If SaveDialog1.Execute Then Begin
N := Edit5.Text;
Try
Edit5.Text := SaveDialog1.Filename;
Memo1.Lines.SaveToFile(Edit5.Text);
Except
Edit5.Text := N;
Raise;
End;
End;
[add]
Ach ja, dem TreeView wurde vorhin noch ein Kontextmenü verpaßt:
- alles ausklappen
- alles zusammenklappen
- Eintag auswählen
(das Selbe, wie bei einem Doppelklick oder beim Benutzen der [Enter]-Taste)
[info] aktuelle Dateien wieder in Beitrag #48