Announcement

Collapse
No announcement yet.

Mein Projekt...

Collapse
This topic is closed.
X
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mein Projekt...

    Guten Tag!

    Ich muss für mein Fachabi eine C++ Projekt machen. Ich habe vor ein ziemlich einfaches Programm zu schreiben. Aber gleich am Anfang bin ich auf ein Problem gestoßen. Brauche also Eure Hilfe

    Idee: Spiel -> Galgen Mennschche. Wörter müssen aus einer txt datei eingelesen werden und nach dem zufallsprinzip ausgewählt werden. Ich habe jetzt probleme mit einlesen. denn die in DEV C++ gängigen befehle funktionieren nicht in Borland Builder.
    Wie kann man aus einer datei die zeilen einlesen? und wohin?
    bis jetzt habe ich das so gemacht:

    fstream f;
    String s;
    f.open("..\\w.txt",ios::in);
    while (!f.eof())
    {
    getline(f,s);
    }
    f.close();

    Edit1->Text=s[1];
    Edit2->Text=s[2];
    Edit3->Text=s[3];
    das problem ist aber, dass in editfelder nur blödsinn rauskommt.
    vielen dank für ihre hilfe ^^

  • #2
    TStringList *mylist=new TStringList();
    mylist->LoadFromFile("meineDatei.txt")

    Edit1->Text=mylist->Strings[0];
    .....

    delete mylist;
    Christian

    Comment


    • #3
      danke für die antwort. aber wie kann man aus der datei eingelesene wörter buchstabenweise in labels ausgeben? gibt es irgend eine funktion dafür?

      Comment


      • #4
        Wie sollte es eine Funktion dafür geben?

        Mit obiger Methode hast du in

        mylist->Strings[x];

        je eine Zeile der Datei.

        Nun greifst du auf den ersten Buchstaben der ersten Zeile mit

        String buchstabe=mylist->Strings[0][1];

        zu.

        BEACHTE: In der Klasse String (AnsiString) beginnt der Index bei 1 und nicht bei 0.

        Somit also

        Label1->Text=mylist->Strings[0][1];
        Christian

        Comment


        • #5
          danke...ist gerade perfekt für das was ich vorhabe. kenn mich eben leider mit dieser klasse nicht so gut aus

          Comment


          • #6
            wie wird der string beendet? also, wie kann ich das ende von dem wort abfragen?

            Edit: wie kann man 2 Strings vergleichen? wie kann man einen label aufrufen der diesselbe nummer wie ein zähler besitzt? <- muss man unbeding if anweisungen machen?
            z.B.:
            for(int i=0; i<5; i++)
            lbla(i)->...

            so was ähnliches eben....
            Zuletzt editiert von creo; 26.02.2007, 22:54.

            Comment


            • #7
              Hallo,

              die Länge eines Strings bekommst Du mit

              String S;
              int Length;

              Length = S.Length();

              Das heißt: String 'durchgehen' mit:

              for (i=1; i<=S.Length(); i++)
              do_something(i);

              Stringvergleich: AnsiCompare => siehe Hilfe zu String

              Gruß vom Knut

              Comment


              • #8
                hi! danke für die antwort. die funktionen sind sehr hilfreich.
                das mit dem string durchgehen hast du mich nicht ganz verstanden.

                ich habe eigentlich labels gemeint.

                ich habe etwas mit 20 labels, und die werden alle in abhängigkeit von dem zähler verändert.

                ich wollte eben fragen, ob man irgend wie die labels so ansprechen konnte, dass die von dem zähler abhängen, ab ich keine 20 if anweisungen brauche. also wie felder mit einer schleife.
                for(int i=0, i<irgendwas; i++)
                label[i]->caption=i;

                ich weis dass das nicht geht, die frage ist, ob es sowas ähnliches gibt.

                Comment


                • #9
                  Am Anfang einen Zeiger auf die Labels in einem Array speichern....
                  Christian

                  Comment


                  • #10
                    also würde es dann so aussehen:
                    double *s[30];
                    s[0]=&label1;

                    Comment


                    • #11
                      Aber kein double

                      TLabel *s[30];
                      Christian

                      Comment


                      • #12
                        womit kann man 2 Strings am besten vergleichen.
                        zum beispiel es gibt label1 der mit String e verglichen werden muss:

                        String e;
                        int j;
                        TLabel* s[1];
                        s[0]=label1;

                        if(e=s[0]->Caption) <-das geht nicht. wie kann man in diesem fall am besten vergleichen?
                        j=1;

                        Comment


                        • #13
                          String1 == String2 (2 Gleichheitszeichen, wie in C/C++ üblich....)

                          Label->Caption==e


                          Schau in der Hilfe unter AnsiString nach.

                          Deine if-Abfrage sollte funktionieren (mit 2 Gleichheitszeichen). Und "Geht nicht" ist keine Fehlermeldung. Ggf. posten was nicht geht. Wird s[0] mit einem TLabel belegt? Ist s[0] zur Laufzeit auch mit Speicher versorgt? Was sagt der Debugger an der if-Abfrage? Welche Inhalte sind in e und s[0]->Caption zu diesem Zeitpunkt drin?
                          Christian

                          Comment


                          • #14
                            danke, war ein denkfehler von mir
                            habe noch ein problem. wie kann ich den weg zur einer datei speichern, die mit hilfe von openfiledialog ausgelesen wurde.
                            habe es auf diesem weg versucht, hat aber nicht geklappt, da er diese fuktion LoadFromFile nicht kennst in zusammenhang mitder variable, was auch klar ist.
                            also, wie kann man den weg in eine variable abspeichern um die dann auch ohne probleme einsetzten zu können

                            if(opdbibliothek->Execute())
                            {

                            TStringList *mylist=new TStringList();
                            mylist->LoadFromFile(opdbibliothek->FileName);
                            Weg=LoadFromFile(opdbibliothek->FileName);

                            }

                            Comment


                            • #15
                              Pfad & Datei
                              Weg=opdbibliothek->FileName;

                              Pfad
                              Weg=ExtractFilePath(opdbibliothek->FileName);
                              Christian

                              Comment

                              Working...
                              X