TStringList Frage



  • Also ich verwende TSTringListen, mit dem Befehl Add kann man ja objekte hinzufügen, kann man aber auch mehrere Variablen an den Add Befehl senden.
    So z.B. TSTringList->Add(String+int+float)
    Aber mit + und Komma fukntioniert das nicht, kann man das realisieren, denn ich möchte das ich eine TStringList in eine txt speichere und dabei in jeder Zeile soetwas steht wie:
    int Variable +"="+String
    geht das irgendwie?



  • Versuche es mal mit der Funktion IntToStr bei der Integer Variable.



  • Das klappt ja alles wenn ich Add mit nur einer Variable verbinde, egal ob int float oder String, aber ich möchte menrere Variablen verbinden und das ist mein eignetliches Anliegen.



  • Beispiel-Code:

    TStringList *list=new TStringList();
    int        Variable =5;
    AnsiString Variable2="Test";
    list->Add(IntToStr(Variable)+" = "+Variable2);
    ShowMessage(list->Strings[0]);
    

    Also wenn du es so meinst, funktioniert es doch.



  • Achja? Das hhatte ich probiert mach es aber nochmal.



  • //---------------------------------------------------------------------------
    #include <vcl\vcl.h>
    #include <iostream>
    #include <stdlib.h>
    #include <conio.h>
    #pragma hdrstop
    //---------------------------------------------------------------------------
    USERES("Vorspann.res");
    //---------------------------------------------------------------------------
    int main()
    {
    TStringList *ASCIITastencode;
    String NameDerTaste;
    int ASCIITaste;
    //---------------------------------------------------------------------------
    ASCIITastencode=new TStringList;
    system("cls");
    cout <<"-----------------------------------------------------""\n";
    cout <<"Dieses Programm gibt, nachdem sie eine Taste gedr\x084\ckt""\n";
    cout <<"haben, dem ASCII Code aus und speichert ihn in der""\n";
    cout <<"Textdatei ASCII.TXT. Wenn sie die Abfrage beenden""\n";
    cout <<"wollen, geben sie bei der Bezeichnung 'END' ein.""\n";
    cout <<"""\n";
    cout <<"Version: 1.0	                 By: Kevin Jakob""\n";
    cout <<"-----------------------------------------------------""\n";
    system("Pause");
    while(true)
    {
    system("cls");
    ASCIITaste=getch();
    cout <<"---------------------------------------""\n";
    cout <<"ASCII Code dieser Taste : "<<ASCIITaste<<"\n";
    cout <<"---------------------------------------""\n";
    cout <<"Wie ist die Bezeichung f\x081r diese Taste?""\n";
    cin  >>NameDerTaste;
    cout <<"---------------------------------------""\n";
    if(NameDerTaste=="END" || NameDerTaste=="End")
    {
    break;
    }
    ASCIITastencode->Add(IntToStr(ASCIITaste)+"		="+NameDerTaste);
    }
    ASCIITastencode->SaveToFile("ASCII.txt");
    cout <<"------------------------------------------------------""\n";
    cout <<"Beim n\x084\chsten Programmstart wird die Datei \x081\berschrieben!""\n";
    cout <<"------------------------------------------------------""\n";
    system("Pause");
    return 0;
    }
    

    So das wäre der Quellcode, also das mit TStringList geht jetzt, jedoch wenn ich bei cin >>NameDerTaste; angekommen bin, bleibt er dort steckenich kann zwar etwas eingeben doch er springt immer eine Zeile nach unten. Liegt das vielleicht ich vcl.h includiert habe und dieser String nicht mit cin zusammenarbeitet??? Wenn ich nämlich string.h includiere muss ich "String Variable" klein schreiben statt wie jetzt groß. Und dann geht das mit cin doch das mit TStringList, wie oben beschrieben funktioniert nicht mehr. Ich bitte um Hilfe.



  • Das Problem ist, dass 'cin' nicht mit AnsiString bzw. String arbeitet.
    Gibt dein Compiler keine Fehlermeldung aus?
    Wenn ich mich nicht irre, kannst du das bloß mit char umgehen.

    Bei mir klappt das so:

    //---------------------------------------------------------------------------
    #include <vcl\vcl.h>
    #include <iostream.h>
    #include <stdlib.h>
    #include <conio.h>
    #pragma hdrstop
    //---------------------------------------------------------------------------
    USERES("Vorspann.res");
    //---------------------------------------------------------------------------
    int main()
    {
    TStringList *ASCIITastencode;
    char NameDerTaste[30];
    int ASCIITaste;
    //---------------------------------------------------------------------------
    ASCIITastencode=new TStringList;
    system("cls");
    cout <<"-----------------------------------------------------""\n";
    cout <<"Dieses Programm gibt, nachdem sie eine Taste gedr\x084\ckt""\n";
    cout <<"haben, dem ASCII Code aus und speichert ihn in der""\n";
    cout <<"Textdatei ASCII.TXT. Wenn sie die Abfrage beenden""\n";
    cout <<"wollen, geben sie bei der Bezeichnung 'END' ein.""\n";
    cout <<"""\n";
    cout <<"Version: 1.0                     By: Kevin Jakob""\n";
    cout <<"-----------------------------------------------------""\n";
    system("Pause");
    while(true)
    {
    system("cls");
    ASCIITaste=getch();
    cout <<"---------------------------------------""\n";
    cout <<"ASCII Code dieser Taste : "<<ASCIITaste<<"\n";
    cout <<"---------------------------------------""\n";
    cout <<"Wie ist die Bezeichung f\x081r diese Taste?""\n";
    cin  >> NameDerTaste;
    cout <<"---------------------------------------""\n";
    if(!strcmp(NameDerTaste,"END"))break;
    ASCIITastencode->Add(IntToStr(ASCIITaste)+"        ="+AnsiString(NameDerTaste));
    }
    ASCIITastencode->SaveToFile("ASCII.txt");
    cout <<"------------------------------------------------------""\n";
    cout <<"Beim n\x084\chsten Programmstart wird die Datei \x081\berschrieben!""\n";
    cout <<"------------------------------------------------------""\n";
    system("Pause");
    return 0;
    }
    


  • Danke aber ich habe ein Reines Dosprogramm gemacht, indem ich <string> includiere und darunter hab ich dann using namespace std; oder soähnlich geschrieben. Mit diesem String, der klein geschrieben wird(also string Variable)konnte ich cin verwenden. Besteht ein Unterschied zwischen String aus vcl.h und string aus <string>?



  • wenn du reine konsolenprogramme schreibst, benötigst du schon mal keine vcl, dann kannst du direkt im c/c++ forum nachfragen.

    String (AnsiString) ist die VCL-Stringklasse, während string zum C++-Standard gehört.


Anmelden zum Antworten