ANSIString & char... Problem beim Umschreiben einer Funktion



  • Hallo,
    ich habe folgende Funktion zum Umkeheren eines Strings geschrieben.

    AnsiString ReverseString(AnsiString input)
    {
      AnsiString temp=input;
      for (int i=1; i<=input.Length(); i++)
      {
        temp[(input.Length())-i+1]=input[i];
      }
      return(temp);
    }
    

    Jetzt wollte ich das ganze etwas praktischer gestalten und habe folgendes daraus gemacht:

    void ReverseString(AnsiString *input)
    {
      AnsiString temp=*input;
      for (int i=1; i<=input->Length(); i++)
      {
        temp[(input->Length())-i+1] = input[i];  // FEHLER
      }
      return(temp);
    }
    

    An der markierten Stelle bekomme ich die Fehlermeldung dass AnsiString und char inkompatibel sind. Aber an der Stelle mische ich die beiden doch gar nicht. Oder spinnich? Was mach ich falsch?

    Freue mich auf Antworten.
    MfG Stefan



  • Hallo

    AnsiString ReverseString(const AnsiString &input) // Rückgabe und Referenz !
    {
      AnsiString temp= input;
      for (int i=1; i<=input.Length(); i++)
      {
        temp[(input.Length())-i+1] = input[i];
      }
      return(temp);
    }
    

    bis bald
    akari



  • #include "StrUtils.hpp"
    
    String rev=ReverseString("text");
    


  • Hallo

    @dope : Weder die Headerdatei noch die Funktion gibt es im Builder 5.

    bis bald
    akari



  • @dope danke, aber eigentlich wollte ich extra keine vordefinierte funktion nehmen um mal zu sehen wie ich das selber machen kann...

    @akari
    dadruch macht die funktion aber immer noch das gleiche.
    der aufruf würde

    str1 = ReverseString(str1)
    

    lauten.
    Ich wollte es aber so umschreiben dass ich den aufruf per

    ReverseString(str1)
    

    machen kann.



  • Hallo

    also eigentlich ist die Rückgabevariante praktischer. Zum Beispeil sind alle VCL-Funktionen ähnlicher Art ebenfalls nach dem prinzip. (Desweiteren ist das mit der Referenz auch besser als deine eigene erste Variante)

    Aber wenn du willst :

    void ReverseString(AnsiString &input) // Rückgabe und Referenz !
    {
      AnsiString temp= input;
      for (int i=1; i<=input.Length(); i++)
      {
        temp[(input.Length())-i+1] = input[i];
      }
      input = temp;
    }
    

    bis bald
    akari



  • Sicher ist das keine sonderlich elegante Lösung oder so. Mir geht es dabei nur mal darum zu schaun, wie es überhaupt möglich wäre. Danke mal für die Hilfe soweit 😃



  • akari schrieb:

    Hallo

    @dope : Weder die Headerdatei noch die Funktion gibt es im Builder 5.

    bis bald
    akari

    Mittlerweile gibt es schon einige Jahre den Builder 6 und jetzt auch schon dessen "Nachfolger".



  • ... und dann gab es noch "old-school-soldier"... *g*
    trotzdem mal gut zu wisen dass es das ganze gibt



  • OT-Diskussion gelöscht.
    Bitte beim Thema bleiben!


Anmelden zum Antworten