FileListView - kleines Problem



  • Hallo, folgendes Problem:
    (Ich verwende Kylix 3)
    Die Eigenschaft FileListView->Directory->Lacation stellt sich im Hintergrund selbständig auf meine Arbeits-Directory ein, wenn das Formular geöffnet wird.
    Ich stelle die Location standardmäßig auf "/" ein.
    Ich kann die Lacation zwar per Programm umschalten, aber im Zielsystem kommt zuerst eine Fehlermeldung, da die Directory nicht existiert. Hat jemand eine Lösung? Muss evtl. eine weitere Eigenschaft beachtet werden?
    Gruß, Harald



  • Wo/wie stellst du die Location um, wann genau kommt die Fehlermeldung und welches Verzeichnis genau kann nicht gefunden werden?



  • Mein Projekt steht in folgendem Verzeichnis: /home/entwicklung/cp800/....
    Ich stelle die Location nur auf "/" , könnte aber jede beliebige sein.
    Ich schliesse das Formular mit dieser Einstellung.
    Ich öffne das Formular wieder.
    in "Location" steht: /home/entwicklung/cp800/
    Gruß, Harald



  • Wie gesagt, wo setzt du die Location?
    Üblicherweise erledigt man sowas im Form-Konstruktor, damit zum Programmstart die entsprechende Einstellung geladen wird.



  • in FormShow:

    void __fastcall TForm::FormShow(TObject *Sender)
    {
        FileListView->Directory->Location = "/home/...";
    }
    

    Die Fehlermeldung erscheint bereits beim Programmstart.



  • Die drei Punkte stehe aber nicht in deinem tatsächlichen Code, oder? 😉

    Bist du sicher, dass a) das Verzeichnis tatsächlich existiert und du b) über die entsprechenden Rechte verfügst?
    Und wie ist der genaue Wortlaut der Fehlermeldung? Ich bekomme bei erzwungenen Fehlern immer nur "cannot read ...", aber nichts ala "cannot find ...".



  • Die Fehlermeldung erscheint nicht beim Programmstart, sondern beim ersten Aufruf des Formulars:
    "Fehler Verzeichnis: "/home/entwicklung/cp800/"
    Nach Bestätigung von OK wird das Formular mit der korrekten Directory benutzt.
    /home/update/ Beim zweiten Aufruf des Formulars kommt die Meldung nicht mehr.
    Es würde laufen, wenn die Location vor "FormShow" gesetzt würde.
    Aber wo müsste dieses stehen?



  • Z.B. im Form-Konstruktor, wie schon gesagt.
    Aber ich kann dein Problem absolut nicht nachvollziehen, egal, wo die Location gesetzt wird.
    Bei Interesse kannst du mir ja mal ein entsprechendes Beispielprojekt mailen.



  • Der Fehler läßt sich reproduzieren, wenn im Objectinspector / Eigenschaften die Location auf eine nicht vorhandene Directory eingestellt wird!
    Beim Öffnen des Formulars passiert dieses bei mir automatisch.
    Vergesse ich nun, diese Location im Objectinspector / Eigenschaften von Hand zurückzustellen, wird eine Fehlermeldung beim Kunden erzeugt, da auf dem Ziel-Rechner diese Location nicht vorhanden ist (Es handelt sich ja um meine Entwicklungsumgebung).

    Ich habe jetzt folgende Zeile eingefügt:

    void __fastcall TForm_Update::FormCreate(TObject *Sender)
    {
        FileListViewUpdate->Directory->Location = "/home/"; // falls update-Verzeichnisse nicht angelegt wurden.
    }
    

    Das Problem ist aber immer noch vorhanden.
    Beim Erzeugen des Formulars wird zuerst die Location übernommen, die im Objectinspector / Eigenschaften eingestellt ist!
    Beim zweiten Aufruf des Formulars ist alles OK.



  • Andresen schrieb:

    Der Fehler läßt sich reproduzieren, wenn im Objectinspector / Eigenschaften die Location auf eine nicht vorhandene Directory eingestellt wird!

    Ahja, das kann ich nachvollziehen.
    Als Lösung fällt mir aber auch nur ein, die Location im OI auf ein garantiert vorhandenes Verzeichnis zu setzen ('/', '/home' o.ä.). Bei mir wird diese Einstellung dann auch über das Schliessen der Form oder des Projektes hinweg beibehalten. Vielleich hilft es ja, die entsprechende XFM-Datei ausserhalb der IDE mal von Hand zu editieren.



  • Editieren ist zwar möglich, aber beim nächsten Aufruf wird es wieder überschrieben.
    Ich muss eben aufpassen, das ich die Umstellung auf z.B. /home nicht vergesse.
    Viele Dank für die Mühe!


Anmelden zum Antworten