![]() |
Re: Probleme mit dem Freigeben von TabSheets
Zitat:
Wie blöd kann man nur sein?! Ich bin Momentan in der Schule, kann also nicht an mein Prog. Heute Mittag werd ich aber alles nochmal prüfen und diverse Fehler verbessern. mfg Christian |
Re: Probleme mit dem Freigeben von TabSheets
Ich hab mir das mit den Speicherlöchern mal angeguckt. Waren doch keine drin(glaub/hoff ich zumindest):
1. Groups is read-only, weil nie schreibend darauf zugegriffen wird. Groups ermittelt nur die Ordnernamen und somit die "Gruppen" 2. beim instanzieren wird den TabSheets und ShellListViews parent zugewiesen, somit gibts 3. auch keine Probleme mit dem freigeben, weil das PageControl das erledigt. Weitere Schwachstellen hab ich nicht gefunden. Zum eigentlichen Problem: Ich hab noch was herausgefunden: Wenn ich den Ordner gelöscht hab, bleibt er noch ewig lange bestehen(bis zur Exception). Allerdings, wenn ich ihn zwischendurch mit dem Explorer löschen will, bekomme ich "Zugriff verweigert". Das könnte(auch wenn ich mir nicht denken kann wie) die Problemquelle sein, nur warum is der ordner noch da? der sollte doch eigentlich nach RemoveDir weg sein...? :gruebel: mfg Christian |
Re: Probleme mit dem Freigeben von TabSheets
Schau nochmal genauer:
Delphi-Quellcode:
Abgesehen von diesem Problem rate ich dir zu einer Abstraktions-Ebene für deine Abbildung Gruppe-nach-Ordner. Es ist einfach zu verwirrend, wenn du an unterschiedlichen Stellen immer versuchst die TabSheets mit den Ordnern im Verzeichnis zu synchronisieren. Kapsel die Ordnerzugriffe so, dass sie für die Gruppen-Aktionen transparent sind und teste das getrennt aus.
function TGroups.GetGroups: TStrings;
... begin ... Result := TStringList.Create; ... end; procedure TGroups.CreateGroups; ... begin ... for i := 0 to GetGroups.Count - 1 do CreateTab(Groups[i]); end; marabu |
Re: Probleme mit dem Freigeben von TabSheets
Zitat:
Jetzt fragt sich nur: wie? Ich greife mehrmals auf die Ordner zu: - beim Start zum ermitteln der Gruppen: GetGroups - beim Erstellen einer Gruppe: NewGroup - beim Umbenennen einer Gruppe: RenameGroup - beim Löschen der Gruppe: DeleteGroup Dabei sind die Gruppen in den Ordnern "gespeichert" und werden durch die TabSheets angezeigt. Du meinst also, ich sollte ne neue Klasse TSyncDir oder sowas erstellen, die die Ordner in den genannten Fällen syncronisiert. Dann hätte ich jeweils nur den Aufruf SyncDirs und nicht mehr DeleteDir, RenameDir, ForceDirectories... Man bekommt also im Quelltext nur mit, dass die Ordner syncronisiert werden, wie das passiert nicht. Ob das übersichtlicher wird... :gruebel: Ich glaub ich hab den Sinn da noch nicht ganz erfasst, oder hab ich dich nur falsch verstanden? :gruebel: mfg Christian |
Re: Probleme mit dem Freigeben von TabSheets
Ich hab ne funktionierende Lösung *freu*. :P
Allerdings würde ich das nicht unbedingt "schön" nennen. Ich hab ne StringList FDirsToDel eingeführt. In DeleteGroup wird dann der zu löschende Ordner eingetragen und im Destuctor dann wirklich gelöscht. Damit kommts nicht mehr zur AV. Jetzt stellt sich nur die Frage: Geht das nicht besser? Und vor allem: Warum "dauert" das Löschen so lange. Darin sehe ich nämlich momentan das eigentliche Problem. Ich bekomme "Zugriff verweigert"(auch wenn ich nicht weiß, wo ich denn nochmal auf den Ordner zugreife) und das führt zur AV. mfg Christian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz