BlackBoard (http://www.black-board.net/index.php)
- Design, Programmierung & Entwicklung (http://www.black-board.net/board.php?boardid=55)
-- Programmieren (http://www.black-board.net/board.php?boardid=4)
--- C++ Einzelnes Zeichen eines AnsiStrings (http://www.black-board.net/thread.php?threadid=8115)


Geschrieben von Counie am 27.10.2002 um 19:00:

  Einzelnes Zeichen eines AnsiStrings

Kann mir jmd. sagen, wie ich bei nem AnsiString eine bestimmte Position auslesen kann!?!?

Allso z.B. das mir das Programm sagt, die 3.Position von "hallo" ist ein "l" !?!?

Danke, Counie



Geschrieben von LX am 27.10.2002 um 19:43:

Achtung

Strings werden in C/C++ doch behandelt wie Arrays vom Typ Character. Ergo müsste es wie in folgendem Beispiel bei dir funxen:

code:
1:
2:
3:
4:
5:
6:
7:
8:
#include <stdio.h>

int main()
{
  char Hallo[] = "hallo";
  printf("%c",Hallo[3]);
  return (0);
}

Hallo[3] gibt dir also das 4. Zeichen (Arrays fangen bei 0 an) innerhalb von Hallo aus.



Geschrieben von Counie am 27.10.2002 um 20:09:

 

Ne, das geht irgendwie auch nich.
Ich beschreibs mal näher:

Ich habe 2 Eingabefelder (Edit1 und Edit2)
in Edit1 schreibe ich irgendeinen Satz und speichere den den in einer Variablen

...


Ansistring e1 = Edit1 -> Text;
AnsiString ein_wort = "";
for(i=0; i<6; i++)
{
ein_wort + e1[i];
}
Edit2->Text = ein_wort ;


doch entweder es kommen irgendwelche Fehlermeldungen oder
das Programm stürzt ab.

Kann es sein, dass der dadurch nich ne Position überprüft, sondern denkt, es wären mehrere "e1" deklariert worden ???



Geschrieben von phlox81 am 27.10.2002 um 20:24:

 

Was ist überhaupt AnsiString ?
Meinst du damit STL ansistring ?
Und welche Grafische Oberfläche benutzt du ? (VCL, MFC oder WinApi ?)

www.c-plusplus.de/forumstart.htm
^kann ich in sachen C++ nur empfehlen...

Devil



Geschrieben von LX am 27.10.2002 um 20:33:

Achtung

Ansistring als Datentyp sacht mir jetzt zugegebenermaßen nix. Aber
code:
1:
2:
3:
4:
for(i=0; i<6; i++)
{
ein_wort + e1[i];
}
wird so nicht viel bringen. Wenn, dann müsste es
code:
1:
ein_wort += e1[i]
sein. Wenn du allerdings nur einen Ausschnitt eines Strings in einen anderen kopieren willst, dann gibt es dafür auch vorgegebene Funktionen (strcpy() soweit ich mich erinnere).



Geschrieben von HeaD am 27.10.2002 um 20:40:

 

Das ist doch nicht ANSI C oder ?? Ich kenne Ansistring nur vom C++ Builder also VC oder so...
Ansistring und Char ist was anderes soweit ich weiß und kann auch nicht gleich behandelt werden, soweit ich weiß Augen rollen



Geschrieben von phlox81 am 27.10.2002 um 20:43:

 

Der Code gibt aber nur das Zeichen an der 6. Stelle des
Strings aus, und wenn dein String kürzer ist, dann ...

code:
1:
2:
3:
4:
5:
for(i=0; i<6; i++)
{
ein_wort=+ e1[i];
}

ergebnis davon währe du kopierst den String in ein_wort.
Bufferoverflow, da der String ja schon vorher endet...
Wenn du nur den Buchstaben haben willst, muss es heissen:

code:
1:
ein_wort = e[i];


Devil



Geschrieben von Counie am 27.10.2002 um 20:51:

 

jo, leider.
Ich programiere es mit dem Borland c++ Builder

Und da gibt es halt bei Fenster-Anwendungen statt dem normalen String, den AnsiString
Bei dem geht es auch mit dem + statt =+
aber ich hab mir alle Methoden für den String angeschaut und keine kann mir den Buchstaben an einer Position ausgeben ??



Geschrieben von phlox81 am 27.10.2002 um 20:54:

 

Hmm, gibts da keine GetAt funktion?
bei CString ist das die Function dafür.
und ansistring ist das Equivalent dazu in der VCL.

Devil



Geschrieben von Counie am 27.10.2002 um 20:55:

 

ich hab drauf geachtet, dass ich mehr als 6 Zeichen eingebe und hab auch ne Überprüfung gemacht, ohne die er das ganze gar nicht macht.
code:
1:
2:
3:
4:
5:
6:
if(e1.Length() > 6)
{
...
}



Geschrieben von phlox81 am 27.10.2002 um 21:00:

 

Also ich progge zwar auch C++, aber mit dem MS VC
und MFC, kenne mich also nicht mit dem Builder aus
und auch nicht mit der VCL, falls du fragen haben
solltest, kannst du sie hier stellen :
http://www.c-plusplus.de/ubb/cgi-bin/ultimatebb.cgi?ubb=forum&f=2
Oder mal in die VCL Faq von unserem Forum schaun:
http://www.c-plusplus.de/ubb/cgi-bin/ultimatebb.cgi?ubb=forum&f=19

Devil


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH