Moin,
* Stefan Hundhammer
On Tuesday 21 October 2003 22:26, Thorsten Haude wrote:
Soweit die Situation. Mein Problem ist folgendes: Für eine Erweiterung der FSB (Anzeigen von versteckten Dateien) muß ich zwei Listen quer durch getfiles.c schleppen. Wie soll ich das machen: 1. Mit modulglobalen Variablen in getfiles.c. 2. In einem Attribut der FSB, wodurch ich den Typ der Listen unnötigerweise auch in file.c bekanntmachen müßte.
Eine Übergabe der Listen durch Funktionsparameter kommt nicht in Frage, da einige der Beteiligten Funktionen Prototypfunktionen sind, deren Typ ich nicht ändern kann.
Vor globalen Variablen schrecke ich zurück, das habe ich bislang auch nicht gebraucht. Ich hoffe halt, daß es noch eine Lösung gibt, die ich bisher übersehen habe.
Es ist schon eine Weile her, daß ich zuletzt Motif programmiert habe...
Du wirst nicht darum herumkommen, diese Listen an das Widget zu hängen; sie beziehen sich ja wohl auf eine Instanz der XmFileSelectionBox, nicht auf die Widget-Klasse global.
Schon, aber die FSB blockt momentan die Anwendung, mehr als eine ist also eh nicht nötig. Allerdings muß das ja nicht immer so bleiben, ein Argument ist das schon. Jetzt fragt sich nur, wie weit man sich C zurechtbiegen soll, um objektorienriert zu werden.
Wenn Du das nicht tust, ist auch schon egal, ob die Dinger richtig global sind, oder ob Du statische Variablen (oder per malloc() erzeugte) per Funktion an die andere Seite übergibst, um sie dort in einer anderen statischen Variablen abzulegen. Aufpassen mußt Du dann auf jeden Fall, daß Du die Listen auch wieder richtig abräumst.
Ich muß sie ja nicht übergeben, die Kapselung wird nur durchbrochen, weil ich mit dem Leben muß, was C für OOP hält. Die FSB hat nur ein Feld, das ich nutzen kann, also muß ich eine Struktur anhängen.
Ich weiß, daß das speziell mit Xt/Motif nicht einfach ist, aber hast Du schon mal daran gedacht, das XmSelectionBox-Widget abzuleiten und um die gewünschte Funktionalität zu erweitern?
Ja, aber nur kurz. Ich habe noch nie ein Motifwidget abgeleitet, und ich will nicht mit einem so wichtigen und komplizierten wie der FSB anfangen.
Übrigens: All das sind die Gründe, warum ich schon lange auf C++/Qt umgestiegen bin. ;-)
Tja, wenn Du ein Qt-Widget nennen kannst, das auch nur annähernd an NEdit's Textwidget heranreicht, ist der erste Schritt zum Umstieg schon getan. Qt müßte dann nur noch auf jedes Unix, Windows, OS/2, MacOS und VMS portiert werden. Thorsten -- A future startup with no patents of its own will be forced to pay whatever price the giants choose to impose. That price might be high: Established companies have an interest in excluding future competitors. - Bill Gates