Textdatei auslesen!


  • Mod

    Hallo

    zB so:

    TZReadOnlyQuery *Query;
    AnsiString aSQL = "SELECT FERTIGNR FROM stammdaten.rezepte";
    int i;
    
    Query = new TZReadOnlyQuery(this);
    Query->Connection = ZConnection1;
    
    ComboFertigungsnummer->Clear();
    
    try
        {
        Query->Close();
        Query->SQL->Clear();
        Query->SQL->Add( aSQL );
        Query->Open();
        for ( i=0; i< Query->RecordCount; i++ )
            {
            ComboFertigungsnummer->Items->Add ( Query->FieldByName("FERTIGNR")->AsString );
            Query->Next();
            }
        }
    catch ( ... )
        {
        ShowMessage ( "Fehler beim Daten holen (Rezeptdaten) " );
        };
    delete Query;
    

    MfG
    Klaus



  • THX Klaus das werd ich mal gleich ausprobieren :).



  • Hey Klaus, ich könnte dann ja auch einfach die Query Komponente verwenden oder ? ich brauch doch nicht erst ein neues objekt anlegen oder ?
    ne muss ich nicht oder sind meine Gedanken falsch ?



  • Habe jetzt was in der Hilfe gefunden, kann mir das vielleicht weiterhelfen und wenn ja wie, da ich nicht weiß wie ich es einsetzen soll!

    void __fastcallTForm1::Button1Click(TObject *Sender)
    
    {
      	for (int i = 0; i < ListBox1->Items->Count; i++)
        	ListBox1->Items->Strings[i] = UpperCase(ListBox1->Items->Strings[i]);
    }
    


  • das hilft dir nicht weiter

    streng dich mal an!



  • BorlandNewbie schrieb:

    Habe jetzt was in der Hilfe gefunden, kann mir das vielleicht weiterhelfen und wenn ja wie, da ich nicht weiß wie ich es einsetzen soll!

    void __fastcallTForm1::Button1Click(TObject *Sender)
    
    {
      	for (int i = 0; i < ListBox1->Items->Count; i++)
        	ListBox1->Items->Strings[i] = UpperCase(ListBox1->Items->Strings[i]);
    }
    

    sag mal wieso machst du dir das so schwer benutze doch einfach eine DB da kannst du die Beziehungen untereinander besser festlegen anstatt in so einer txt .



  • Ich verzweifel noch!! Hier geht doch garnix bei mir... 🙄

    Ich bekomme das einfach nicht hin, aber trotzdem nochmal danke... 😃



  • *imkreisumherspring* so werd jetzt mal damit auch JANSEN glücklich und froh ist den code hier reinstellen und in meiner Frage auch damit andere DUMMIES ihn auch finden 🙂

    void __fastcall TForm2::FormCreate(TObject *Sender)
    {
    
       int i;
       Query2->SQL->Clear();
       Query2->SQL->Add( "Select Name from Bilder" );
       Query2->Open();
       for ( i=0; i< Query2->RecordCount; i++ )
            {
            ListBox1->Items->Add ( Query2->FieldByName("Name")->AsString );
            Query2->Next();
            }
    
    }
    

    ich hatte das fast so ähnlich bloss das ich das mit AsString vergass *G*. Frage neben bei muss ich alles was ich aus der DB hole immer in einen String umwandeln ?



  • erst mal so welche Version von BCB benutzt du dann kann ich dir genau sagen wie das mit der DB einbindung genau vor sich geht :). Hab das auch vor kurzen alles durch deshalb weiß ich das ganze noch 🤡 .



  • Fantasyfr schrieb:

    damit auch JANSEN glücklich und froh ist

    1. Siehe FAQ, "Datenbank - Ergebnisse von SELECT verarbeiten"

    2. http://www.c-plusplus.net/forum/viewtopic.php?t=69193


  • Mod

    Hallo

    @Fantasyfr

    bitte schreib SQL-Befehle gross (->Standard)

    Select -> SELECT
    usw.

    MfG
    Klaus



  • AAAAAAAAAAAAAAAHHHHHHHHHHHHHHHHHHHHH!!!!!
    Bitte nicht! Was wollt ihr denn für so nen Pippifax ne superfette Datenbank herbeiziehen??!! Und das für einen Newbie... Bitte lasst das.

    @Newbie: Mach das so, wie es dir gesagt wurde. Erstelle dir Dateien "VW.txt", "Opel.txt" usw., in die du sowas wie "Reifen" usw. reinschreibst. Das soll dann jeweils in ListBox2 angezeigt werden. Das große Problem für dich ist jetzt immernoch die Umsetzung.
    Du fragst dich: Wenn der User auf "Opel" klickt, wie finde ich dann heraus, dass er eben genau auf "Opel" geklickt hat. Für das Auslösen eines Mausklicks in der ListBox gibt es 2 Events. Finde diese heraus und wähle eines davon für deine Routine. In der Routine musst du dann noch herausfinden, welches Item angeklickt wurde (in unserem Fall "Opel"). Dazu hat TListBox eine Eigenschaft, deren Namen ich dir schon genannt und fett gemacht habe. Diese Eigenschaft ist vom Typ TStrings. Unter den Eigenschaften von TStrings wiederum findest du diejenige, die dich an dein Ziel bringt.

    P.S.: Wenn dir diese Tipps und die BCB-Hilfe nicht reichen, rate ich dir dringendst, dir mal ein C++-Tutorial anzuschauen.



  • Erstmal vielen Dank nochmal....

    So bin jetzt schon etwas weiter! Der Quelltext sieht im Abschnitt so aus:

    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
            TStringList *list = new TStringList();
            list->LoadFromFile("Cars.f2f");
            String str = list->Text;
            delete list;
    
            ListBox1->Items->LoadFromFile("Cars.f2f");
    

    Nur wie kann ich jetzt alle Strings aufrufen und in Listbox1 schreiben lassen?
    Weil so wie hier:

    ListBox1->Items->LoadFromFile("Cars.f2f");
    

    geht das sicher nicht! 🙂



  • Hallo,

    Wieso sollte das nicht gehen. Wenn es mit deiner StringList geht muss es auch mit ListBox1->Items gehen. Mir ist nur nicht klar wieso du alles vorher in eine StringList und dann in einen String packst.



  • So nun habe ich es hinbekommen das der Inhalt in ListBox1 eingefügt wird, sieht wie folgt aus:

    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {       TStringList *list = new TStringList();
            list->LoadFromFile("Cars.f2f");
            ListBox1->Items->AddStrings(list);
            delete list;
    

    Das Problem ist nur, wie sage ich ihm jetzt das er beim Klick auf den ersten Eintrag in ListBox1, in ListBox2 die Datei "seller.txt" lädt? 😕



  • Ich weiß das ich vielleicht nerve, aber kann mir den niemand helfen?
    Ich sitze seit heute morgen um 8 Uhr hier, aber es funktioniert immernoch nicht! 😞


  • Mod

    Hallo

    geh doch einfach her und verwende ListBox1->OnChange

    im OnChange-Ereignis schaust du nach was denn angeklickt wurde
    je nachdem laedst du in ListBox2 eine andere Datei
    usw.

    MfG
    Klaus



  • BorlandNewbie schrieb:

    Weil so wie hier:

    ListBox1->Items->LoadFromFile("Cars.f2f");
    

    geht das sicher nicht! 🙂

    Doch, genau so geht das! Hattest du doch vorher auch schon. Das war doch gar nicht mehr das Problem.



  • Ne das war es ja auch nicht mehr, habe doch unter den Beitrag geschrieben das es geht 🙂

    Aber nun mal zu Klaus seiner Antwort!
    Was soll ich den nun nehmen? Der eine sagt was mit Item,StringList und so, der andere wieder was mit OnChange!!!

    Als Newbie blickste da jetzt garnicht mehr durch! SOORRYY!!!

    Könntet ihr mir mal detalliert auf die Sprünge helfen? 😕

    Danke! 😃


  • Mod

    Hallo

    bei OcChange war ich wohl falsch gelegen (ist bei ComboBox)

    Verwende OnClick (deiner ListBox)

    in OnClick wertest du aus welcher Eintrag gewaehlt wurde
    dann weist du welche Datei du in ListBox2 einlesen musst
    usw.

    ansonsten

    1. mach dir erstmal einen Plan
    2. der Gebrauch der F1-Taste ist zu empfehlen
    3. schau dir alles zu Listbox mal an (F1)
    4. lass dich nicht entmutigen

    MfG
    Klaus


Anmelden zum Antworten