Verzeichnisweitergabe



  • Hallo,

    habe mal wieder ein kleines Problem..

    Ich wähle mit einer DirectoryBox ein Verzeichnis aus und geben den Pfad weiter an ein Editfeld z.b C:\Programme\hierundda\hallo\ihr .. dieses wird wiederum hier weitergeleitet als Pfadangabe zum Ordner:

    ordnerI->Add(Form3->Edit8->Text);
    

    Problem erkennt ihr vllt schon 🙂
    C++ erkennt das nur mit \\ <--- 2 von denen

    Gibt es da einen Möglichkeit das zu ändern ?

    P.S. auf meinen einen Rechner hat er das so erkannt mit dem Verzeichnis auf den anderen wieder nicht.. komisch...



  • Azad187 schrieb:

    Problem erkennt ihr vllt schon 🙂
    C++ erkennt das nur mit \\ <--- 2 von denen

    ne, ich bin mir sicher, dass die DirectoryBox den String richtig ausgibt



  • if (CheckBox1->Checked)
      {
       ordner->Add(Form3->Edit2->Text);
      }
    

    Form3->Edit1 = c:\T_I1 (ausgewählt über DirectoryListbox)

    Tja wie gesagt er erwartet C:\\T_I1 ...
    also scheint er es ja nicht richtig weiterzugeben...



  • Schau Dir die Variablen bitte im Debugger an.



  • Was könnte \\test ausgeben?
    Was hingen gibt \test aus? und warum?



  • versteh eure Posts leider nicht 🙂

    Der Umgang mit dem Debugger ist mir auch noch nicht geläufig 😃



  • Azad187 schrieb:

    Der Umgang mit dem Debugger ist mir auch noch nicht geläufig 😃

    na dan schleunigst http://www.junix.ch/bcb/help



  • Falls Du mal Deine <<\>> vervielfältigen willst.

    ordner->Add(AnsiReplaceText(Form3->Edit2->Text,"\\","\\\\"));
    

    Schau unter AnsiReplaceText nach.

    Ebenfalls interessant/hilfreich/lehrreich für dürfte das BCB-Thema "String-Konstanten" sowie "Der umgekehrte Schrägstrich" sein.



  • caspar_louis schrieb:

    ordner->Add(AnsiReplaceText(Form3->Edit2->Text,"\\","\\\\"));
    

    Das solltest Du tunlichst vermeiden, da es in diesem Fall schlicht und ergreifend falsch ist.



  • Bei dem AnsiReplaceText macht er bei mir auch zicken...
    Aber so ne Art Lösung ist schon nicht schlecht...

    Allerdings ärgert es mich das er das so nicht erkennt, obwohl er es am anderen PC so erkannt hat, wie ich es vorher gemacht hatte...



  • Sonderzeichen werden dargestellt durch einen Backslash (\):
    '\n' Zeilenende-Zeichen (new line)
    '\t' Tabulatorzeichen
    '\'' Hochkomma (')
    '\"' Anführungszeichen (")
    '\' Backslash (\)
    usw.



  • Also

    Form3->Edit1->Text=DirectoryListBox1->Directory;
    

    So weise ich dem Editfeld das Directory zu das wäre z.B. C:\Programme.

    Wenn das mit dem Ansireplacetext funzen würde, wäre das immer noch ein Problem da er dann C:\Programme\ , übergeben hätte müssen damit es richtig funktioniert.

    Die Pfade werden immer in einer ini gespeichert und wieder aus-eingelsen beim Programmstart... aber das spielt ja keine rolle.

    TStringList *ordner=new TStringList();
     if (CheckBox1->Checked == true)
      {
       ordner->Add(Form3->Edit2->Text);
      }
      else {};
    

    ...Am Ende werden sie halt zugewiesen

    Memo3->Lines->SaveToFile(ordner->Strings[d]+Query4->Fields->Fields[0]->AsString+"_nerv.gtw");
    

    Hier wird gespeichert.. Man erkennt auch schnell das er den Ordner nicht richtig erkennt, weil er als Speichername:
    Ordnername+Query.... nimmt und nicht
    in den Ordner speichert + den Name der Query...



  • NOCHMAL DEUTLICHER: AN DEN ESCAPE SEQUENZEN HERUMZUPFUSCHEN WIRD AUF GAR KEINEN FALL DEIN PROBLEM LÖSEN.



  • Wenn das mit dem Ansireplacetext funzen würde, wäre das immer noch ein Problem da er dann C:\Programme\ , übergeben hätte müssen damit es richtig funktioniert.

    Was hindert dich daran das fehlende Backslash an den String anzuhängen.
    Hierzu wurde unter anderem auch beim AnsiString der Operator + überladen.



  • Joe_M. schrieb:

    caspar_louis schrieb:

    ordner->Add(AnsiReplaceText(Form3->Edit2->Text,"\\","\\\\"));
    

    Das solltest Du tunlichst vermeiden, da es in diesem Fall schlicht und ergreifend falsch ist.

    @ Joe_M
    So war das auch nicht gemeint. Ich hab das extra in den Code von Azad reingepackt, damit er eine Verbindung auf sich sieht und sich dann die Hilfethemen reinzieht.



  • ja gut das ist kein problem,

    Form3->Edit2->Text=DirectoryListBox1->Directory+"\\";
    

    so habe ich dann halt C:\Programme\, aber das mit dem AnsiReplaceText das check ich noch net. Vllt., hilft mir ja google 😉



  • Azad187 schrieb:

    ja gut das ist kein problem,

    Form3->Edit2->Text=DirectoryListBox1->Directory+"\\";
    

    so habe ich dann halt C:\Programme\, aber das mit dem AnsiReplaceText das check ich noch net. Vllt., hilft mir ja google 😉

    siehe dafür IncludeTrailingPathDelimiter



  • #include<SysUtils>
    ordner->Add(ordner->Add(IncludeTrailingPathDelimiter(Form3->Edit2->Text));
    

    hmm kennt er das beim C++ Builder 5 noch nicht ??



  • Der BCB5 kennt diese Funktion. Das richtige include heißt aber #include <SysUtils.hpp>



  • Braunstein schrieb:

    Der BCB5 kennt diese Funktion. Das richtige include heißt aber #include <SysUtils.hpp>

    Wie man auch unschwer der BCB-Hilfe hätte entnehmen können...

    caspar_louis schrieb:

    @ Joe_M
    So war das auch nicht gemeint. Ich hab das extra in den Code von Azad reingepackt, damit er eine Verbindung auf sich sieht und sich dann die Hilfethemen reinzieht.

    Sorry, dann hatte ich Dich mißverstanden...


Anmelden zum Antworten