Kommastellen abschneiden



  • Hallo zusammen,
    ich habe ein kleines Problem. Ich habe eine Methode, die mir StringGrids ausliest und den Inhalt in zwei Dateien unterschiedlichen Formates speichert. Nun ist es so, dass ich diese erstellten Dateien mit einem anderen Programm auslese, wobei dieses Programm ohne Kommastellen arbeitet.

    Das Problem ist, dass ich natürlich in meinem StringGrid Zahlen mit Kommastellen anzeigen möchte. Bis jetzt war es so, dass ich zuvor im Quelltext alle Kommastellen rausmachen musste, damit die Dateien keine Kommastellen beinhalteten. Hier ist die Methode:

    void __fastcall TKepler::Save(TStringGrid *grid, int cellCount)
    {
     list=new TStringList;
     const String leer1 = ". ";
     const String leer2 = ".  ";
     int Entscheidung=Application->MessageBoxA(Warnung.c_str(), "Achtung", 4+16);
     if (Entscheidung==IDYES)
     {
       for(int gridIndex=1; gridIndex<10; ++gridIndex)
       list->Add(IntToStr(gridIndex) + leer2 + grid->Cells[1][gridIndex] + leer1);
       for(int gridIndex=10; gridIndex<cellCount; ++gridIndex)
       list->Add(IntToStr(gridIndex) + leer1 + grid->Cells[1][gridIndex] + leer2);
       list->SaveToFile ("Wertetabelle.dat");
       list->SaveToFile ("Wertetabelle.txt");
     }
     delete list;
    }
    

    Kann mir jemand sagen, wie ich diese Methode abändern mus, damit sie mir zwar die Zahlen aus den StringGrids ausliest, doch dabei alle Kommastellen abschneidet?

    Vielen Dank und Frohe Ostern
    lg, freakC++



  • Wenn ich es richtig verstehe willst du vom String das komma wegschneiden.
    Na dann benutze doch .Trim damit kannst du beim speichern angeben was du alles haben möchtes als dann Trime alles bis zum komma und speichere.

    Gruß



  • ^^ Wieso Trim?

    Ich würde Dir zu AnsiString::Pos raten. Damit kannst Du den Punkt oder das Komma suchen und den Rest mit AnsiString::Delete abschneiden.
    Was auch möglich wäre, dass Du die eingelesenen Daten nach Float konvertierst und mit dessen Methoden die Zahlen bearbeitest (Schau mal in der Hilfe nach z.B. FloatToStrF)



  • Rostfrei[] schrieb:

    ^^ Wieso Trim?

    Ich würde Dir zu AnsiString::Pos raten. Damit kannst Du den Punkt oder das Komma suchen und den Rest mit AnsiString::Delete abschneiden.
    Was auch möglich wäre, dass Du die eingelesenen Daten nach Float konvertierst und mit dessen Methoden die Zahlen bearbeitest (Schau mal in der Hilfe nach z.B. FloatToStrF)

    OK Trim ist net das ware.
    Habe was probiert und das funktioniert , es werden alle Stellen nach dem Komma abgeschnitten.
    Villeicht hilft es.

    Delete nach Komma:

    String wert1;
    
    wert1 = Edit3->Text;
    Edit4->Text = wert1.Delete(wert1.Pos(","),wert1.Length());
    

    oder

    in Float Convertieren

    float wert2;
    
    wert2 = StrToFloat(Edit1->Text); // Edit1->Text = String wert1
    Edit2->Text = wert2;
    

Anmelden zum Antworten