Announcement

Collapse
No announcement yet.

Zeichen an einer bestimmten stelle in einem String auslesen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zeichen an einer bestimmten stelle in einem String auslesen

    Hallo,
    Ich wollte zur Übung einen Taschenrechner Programmieren, da man ja nur ein Komma setzen darf habe ich versucht eine Abfrage einzubauen:
    Code:
    void __fastcall TForm2::B_KommaClick(TObject *Sender)
    {
    for (i = 0; i == TF_Eingabe->Text.Length(); i++)
        {
            if (TF_Eingabe->Text[i] == ",")
            {
                Fehler = true;
            }
        }
        if (Fehler != true)
        {
            TF_Eingabe->Text = TF_Eingabe->Text + ",";
        }
        else
            ShowMessage("Es kann kein zweites Komma gesetzt werden!");
    }
    Doch in der Zeile
    Code:
    if (TF_Eingabe->Text[i] == ",")
    bei "==" tritt folgender Fehler auf:

    [BCC32 Fehler] Unit2.cpp(76): E2034 Konvertierung von 'wchar_t' nach 'const char *' nicht möglich

    Es würde mich motivieren wenn ich schnelle Hilfe bekomme :P


    mfg Zuluhutu

  • #2
    Es würde mich motivieren wenn ich schnelle Hilfe bekomme :P
    Dazu könnte beitragen im richtigen Forum zu posten


    Du kannst aus der Hilfe ersehen, dass nur ein char zugelassen ist und kein charArray

    Somit

    if (TF_Eingabe->Text[i] == ',')
    Christian

    Comment


    • #3
      Danke für die Hilfe aber es gibt trotzdem noch Probleme

      Habe die betreffende Zeile angepasst aber ich kann trotzdem noch unendlich Kommas setzen
      Hier der neue code:

      Code:
      void __fastcall TForm2::B_KommaClick(TObject *Sender)
      {
      for (i = 1; i == TF_Eingabe->Text.Length(); i++)
      	{
      		if (TF_Eingabe->Text[i] == ',')
      		{
      			Fehler = true;
      		}
      	}
      	if (Fehler == true)
      	{
      		ShowMessage("Es kann kein zweites Komma gesetzt werden!");
      	}
      	else TF_Eingabe->Text = TF_Eingabe->Text + ",";
      }
      Sorry bin neu in dem Forum weis nicht genau wo ich diesen Beitrag hätte Posten sollen aber ich verspreche mich beim nächsten Post zu bessern ^^

      mfg Zuluhutu

      Comment


      • #4
        liegt jedenfalls nicht an obigen Code, funktioniert hier einwandfrei

        Ev. ändert jemand zwischendurch die Variable Fehler, die hier eine lokale Variable sein sollte und keine Klassen- oder globale Variable
        Zuletzt editiert von Christian Marquardt; 30.06.2009, 21:50.
        Christian

        Comment


        • #5
          Hier mal der komplette code

          Danke Christian für deine engagierte Hilfe

          Hier einmal der komplette (anfänger^^) code, vielleicht findest du ja den übeltäter:

          Code:
          //---------------------------------------------------------------------------
          
          #include <vcl.h>
          #pragma hdrstop
          
          #include "Unit2.h"
          //---------------------------------------------------------------------------
          #pragma package(smart_init)
          #pragma resource "*.dfm"
          TForm2 *Form2;
          
          double Zahl, Eingabewert1, Eingabewert2, Ausgabe;
          int i, Laenge;
          bool Fehler;
          //---------------------------------------------------------------------------
          __fastcall TForm2::TForm2(TComponent* Owner)
          	: TForm(Owner)
          {
          
          }
          //---------------------------------------------------------------------------
          void __fastcall TForm2::B_1Click(TObject *Sender)
          {
          	TF_Eingabe->Text = TF_Eingabe->Text + "1";
          }
          //---------------------------------------------------------------------------
          void __fastcall TForm2::B_2Click(TObject *Sender)
          {
          	TF_Eingabe->Text = TF_Eingabe->Text + "2";
          }
          //---------------------------------------------------------------------------
          void __fastcall TForm2::B_3Click(TObject *Sender)
          {
          	TF_Eingabe->Text = TF_Eingabe->Text + "3";
          }
          //---------------------------------------------------------------------------
          void __fastcall TForm2::B_4Click(TObject *Sender)
          {
          	TF_Eingabe->Text = TF_Eingabe->Text + "4";
          }
          //---------------------------------------------------------------------------
          void __fastcall TForm2::B_5Click(TObject *Sender)
          {
          	TF_Eingabe->Text = TF_Eingabe->Text + "5";
          }
          //---------------------------------------------------------------------------
          void __fastcall TForm2::B_6Click(TObject *Sender)
          {
          	TF_Eingabe->Text = TF_Eingabe->Text + "6";
          }
          //---------------------------------------------------------------------------
          void __fastcall TForm2::B_7Click(TObject *Sender)
          {
          	TF_Eingabe->Text = TF_Eingabe->Text + "7";
          }
          //---------------------------------------------------------------------------
          void __fastcall TForm2::B_8Click(TObject *Sender)
          {
          	TF_Eingabe->Text = TF_Eingabe->Text + "8";
          }
          //---------------------------------------------------------------------------
          void __fastcall TForm2::B_9Click(TObject *Sender)
          {
          	TF_Eingabe->Text = TF_Eingabe->Text + "9";
          }
          //---------------------------------------------------------------------------
          void __fastcall TForm2::B_0Click(TObject *Sender)
          {
          	TF_Eingabe->Text = TF_Eingabe->Text + "0";
          }
          //---------------------------------------------------------------------------
          void __fastcall TForm2::B_KommaClick(TObject *Sender)
          {
          if (TF_Eingabe->Text == "")
          	{
          		TF_Eingabe->Text = TF_Eingabe->Text + "0,";
          	}
          else
          {
          for (i = 1; i == TF_Eingabe->Text.Length(); i++)
          	{
          		if (TF_Eingabe->Text[i] == ',')
          		{
          			Fehler = true;
          		}
          	}
          	if (Fehler == true)
          	{
          		ShowMessage("Es kann kein zweites Komma gesetzt werden!");
          	}
          	else TF_Eingabe->Text = TF_Eingabe->Text + ",";
          }
          }
          //---------------------------------------------------------------------------
          void __fastcall TForm2::B_ACClick(TObject *Sender)
          {
          	TF_Eingabe->Clear();
          	Zahl = 0;
          	Ausgabe = 0;
          	Eingabewert1 = 0;
          	Eingabewert2 = 0;
          }
          //---------------------------------------------------------------------------
          
          void __fastcall TForm2::B_DividierenClick(TObject *Sender)
          {
          if (TF_Eingabe->Text != "" && Zahl == 0)
          	{
          		Zahl = 1;
          		Eingabewert1 = StrToFloat(TF_Eingabe->Text);
          		TF_Eingabe->Clear();
          	}
          	else if (Zahl == 2 || Zahl == 3 || Zahl == 4)
          	{
          		Zahl = 1;
          	}
          	else ShowMessage("Bitte Wert eingeben!");
          }
          //---------------------------------------------------------------------------
          
          void __fastcall TForm2::B_ErgebnisClick(TObject *Sender)
          {
          	if (Zahl == 0 || TF_Eingabe->Text == "")
          	{
          		ShowMessage("Bitte alle eingaben machen!");
          	}
          	if (Zahl == 1)
          	{
          		Eingabewert2 = StrToFloat(TF_Eingabe->Text);
          		Ausgabe = Eingabewert1 / Eingabewert2;
          		TF_Eingabe->Text = FloatToStr(Ausgabe);
          	}
          	if (Zahl == 2)
          	{
          		Eingabewert2 = StrToFloat(TF_Eingabe->Text);
          		Ausgabe = Eingabewert1 * Eingabewert2;
          		TF_Eingabe->Text = FloatToStr(Ausgabe);
          	}
          	if (Zahl == 3)
          	{
          		Eingabewert2 = StrToFloat(TF_Eingabe->Text);
          		Ausgabe = Eingabewert1 - Eingabewert2;
          		TF_Eingabe->Text = FloatToStr(Ausgabe);
          	}
          	if (Zahl == 4)
          	{
          		Eingabewert2 = StrToFloat(TF_Eingabe->Text);
          		Ausgabe = Eingabewert1 + Eingabewert2;
          		TF_Eingabe->Text = FloatToStr(Ausgabe);
          	}
          		Zahl = 0;
          		Ausgabe = 0;
          		Eingabewert1 = 0;
          		Eingabewert2 = 0;
          }
          //---------------------------------------------------------------------------
          
          void __fastcall TForm2::B_MultiplizierenClick(TObject *Sender)
          {
          	if (TF_Eingabe->Text != "" && Zahl == 0)
          	{
          		Zahl = 2;
          		Eingabewert1 = StrToFloat(TF_Eingabe->Text);
          		TF_Eingabe->Clear();
          	}
          	else if (Zahl == 1 || Zahl == 3 || Zahl == 4)
          	{
          		Zahl = 2;
          	}
          	else ShowMessage("Bitte Wert eingeben!");
          }
          //---------------------------------------------------------------------------
          
          void __fastcall TForm2::B_SubtrahierenClick(TObject *Sender)
          {
          if (TF_Eingabe->Text != "" && Zahl == 0)
          	{
          		Zahl = 3;
          		Eingabewert1 = StrToFloat(TF_Eingabe->Text);
          		TF_Eingabe->Clear();
          	}
          	else if (Zahl == 1 || Zahl == 2 || Zahl == 4)
          	{
          		Zahl = 3;
          	}
          	else ShowMessage("Bitte Wert eingeben!");
          }
          //---------------------------------------------------------------------------
          
          void __fastcall TForm2::B_PlusClick(TObject *Sender)
          {
          if (TF_Eingabe->Text != "" && Zahl == 0)
          	{
          		Zahl = 4;
          		Eingabewert1 = StrToFloat(TF_Eingabe->Text);
          		TF_Eingabe->Clear();
          	}
          	else if (Zahl == 1 || Zahl == 2 || Zahl == 3)
          	{
          			Zahl = 4;
          	}
          	else ShowMessage("Bitte Wert eingeben!");
          }
          //---------------------------------------------------------------------------
          
          void __fastcall TForm2::FormCreate(TObject *Sender)
          {
          	Zahl = 0;
          	Fehler = false;
          }
          //---------------------------------------------------------------------------
          
          void __fastcall TForm2::B_CClick(TObject *Sender)
          {
          	Laenge = TF_Eingabe->Text.Length();
          	TF_Eingabe->Text = TF_Eingabe->Text.SetLength(Laenge - 1);
          }
          //---------------------------------------------------------------------------
          mfg Zuluhutu

          Comment


          • #6
            Warum debuggst du nicht die Routine?
            Christian

            Comment


            • #7
              for (int i = 1; i <= TF_Eingabe->Text.Length(); i++)


              if (TF_Eingabe->Text[i] == ',')
              {
              Fehler = true;
              break;
              }
              Zuletzt editiert von Christian Marquardt; 01.07.2009, 06:34.
              Christian

              Comment

              Working...
              X