String in char[] umwandeln (war: Newby frage)



  • Hi, is zwar eigentlich voll des mini problem, aber ich find nix drüber...
    also, ich will in der graphischen oberfläche von C++ ein ganz normales Wort schreiben lassen (Textbox - kein Prob) und dieses in ein Char[] reinschreiben, wie ist denn da der Befehl???

    Edit:
    Bitte aussagekräftige Überschriften wählen. Danke!



  • Siehe FAQ unter "AnsiString".



  • ok sorry und thx

    hab doch noch ein prob. und zwar:
    wenn ich mehrere Felder eingeben lasse und die als String speichern will, aber in eins nix reinschreib krieg ich folgende Fehlermeldung:

    In Projekt Pojekt1.exe ist eine exception der klasse EAccessViolation aufgetreten. Meldung: Zugriffsverletzung bei Adresse 400068AA in Modul 'rtl60.bpl'. Lesen von Adresse 00000030'. Prozess wurde angehalten. Mit einzelnen Anweisungen oder Start fortsetzen.



  • quellcode ? 🙄



  • Zeig mal den Code wo du in den String speicherst. Der Fehler lässt sich bestimmt dort finden.



  • is zwar lang, aber mein Kollege besteht darauf den gesammten Quelltext zu posten:
    außerdem will der die "straße" nich mehr ausgeben ... 😮 🙄

    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    
    int i=0;
    struct besucher
    {
    int anrede;
    AnsiString nachname[20];
    AnsiString vorname[20];
    AnsiString strase[20];
    int hausnr;
    int plz;
    AnsiString ort[20];
    AnsiString region[20];
    };
    
    struct besucher gaeste[50000];
    
    void __fastcall TForm1::ButtonSpeichernClick(TObject *Sender)
    {
    gaeste[i].nachname[20]=EditNachname->Text;
    EditNachname->Text=' ';
    gaeste[i].vorname[20]=EditVorname->Text;
    EditVorname->Text=' ';
    gaeste[i].strase[20]=EditStrase->Text;
    EditStrase->Text=' ';
    gaeste[i].hausnr=StrToInt(EditHausnr->Text);
    EditHausnr->Text=' ';
    gaeste[i].plz=StrToInt(EditPLZ->Text);
    EditPLZ->Text=' ';
    gaeste[i].ort[20]=EditOrt->Text;
    EditOrt->Text=' ';
    gaeste[i].region[20]=EditRegion->Text;
    EditRegion->Text=' ';
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::ButtonShowClick(TObject *Sender)
    {
    EditNachname->Text=gaeste[i].nachname[20];
    EditVorname->Text=gaeste[i].vorname[20];
    EditStrase->Text=gaeste[i].strase[20];
    EditHausnr->Text=IntToStr(gaeste[i].hausnr);
    EditPLZ->Text=IntToStr(gaeste[i].plz);
    EditOrt->Text=gaeste[i].ort[20];
    EditRegion->Text=gaeste[i].region[20];
    }
    //---------------------------------------------------------------------------
    

    Edit:
    Bitte die Code-Tags benutzen. Danke!



  • Hunter666 schrieb:

    //[20] kannst du dir sparen
    struct besucher 
    { 
    int anrede; 
    AnsiString nachname[20]; 
    AnsiString vorname[20]; 
    AnsiString strase[20]; 
    int hausnr; 
    int plz; 
    AnsiString ort[20]; 
    AnsiString region[20]; 
    }; 
    //hier also auch weg mit [20]
    gaeste[i].nachname[20]=EditNachname->Text;
    //und hierfür kannst du EditNachname->Clear() nutzen
    EditNachname->Text=' ';
    

    Durch die anweisung

    gaeste[i].nachname[20] = Edit->Text
    

    willst du nur an die 20. Stelle im String deinen Text hinspeichern, daher kann das so nicht funktionieren

    und nur mal so ne frage: wo ist i deklariert??



  • Und was soll das hier?

    AnsiString nachname[20];
    

    Damit erstellst du ein Array aus 20 Strings.



  • ok thx erst mal,
    des mit den 20er Arrays war nur ein test, trotzdem danke für die dementsprechenden tips.
    das mit den codetags hab net gewusst, wird nich wieder vorkommen...
    danke für des "clear" - hat uns wirklich wietergeholfen, fett thx
    i ist global deklariert, bzw. initialisiert



  • so ... neues Prob. hab grad schon gesucht wie sau ... aber nix gefunden.
    ich will AnsiString nach TString* konvertieren, d.h. eingegebenen Text (Edit->Text) in eine ComboBox bekommen, alle "logischen" Befehle was ich mir so zusammengereimt habe gehen net, hier etwas Quelltext:

    AnsiString firmen;
    
    firmen=EditBusFirmen->Text;
    EditBusFirmen->Clear();
    
    ComboBox1->Items=firmen; //???????????? hilfe
    


  • Hi,
    musst ein wenig mehr mit der hilfe rumspielen...
    Items ist TStrings und TStirngs hat ne Methode Add()....schwupps schon sollten die Einträge in die Combobox gehen
    CU



  • TStrings ist eine Liste. Zu einer Liste fügt man Objekte hinzu oder löscht sie daraus. Was heisst "Hinzufügen" auf Englisch? Und jetzt nochmal TComboBox::Items in der Hilfe ansehen! 😉



  • PuppetMaster2k schrieb:

    Durch die anweisung

    gaeste[i].nachname[20] = Edit->Text
    

    willst du nur an die 20. Stelle im String deinen Text hinspeichern, daher kann das so nicht funktionieren

    und nur mal so ne frage: wo ist i deklariert??

    An die 21. Stelle um genau zu sein und der Array hat nur 20 stellen



  • die 20er arrays sind natürlich längst weg...
    thx euch allen, ich weis nicht was wir ohne euch gemacht hätten - und weiterhin tun werden (vielleicht).
    ComboBox1->Items->Add(firmen);
    hat wunderbar geklappt, thx
    werd mich wieder melden wenn ich nix finde, aber die hilfe von borland alleine hat uns auch schon ziemlich weitergeholfen



  • 1ntrud0r schrieb:

    An die 21. Stelle um genau zu sein und der Array hat nur 20 stellen

    mein ich doch 😃



  • hi, wir haben da folgendes Problem:
    Wir machen eine Datenbank in der oben eine liste von den datensätzen angezeigt werden soll und unten dann ein formular in dem die datensätze verändert werden können, dazu wollen wir drei verschiedene Kategorien (Besucher, Bus, Hotel) erstellen und haben festgestellt, dass nicht alle drei in das eine frame passen, jetzt habe ich zwei fragen:
    1. Wie ist das am einfachsten zu realisiern (Datenbank technisch von C++, Paradox 7 schon probiert, aber filter funktion und so sollte drin sein).
    2. Wie kann ich noch ein frame öffnen in dem der User bsp. die Hotel daten eingeben kann?



  • Was hat das mit dem eigentlichen Thread zu tun??? 😕



  • ja das es eigentlich "unser" Thread ist, und ich dachte ich schreib hier jeweils unsere Porbleme rein... oder soll ich jedesmal ein eigenes thread öffnen?



  • also bei ansistring beginnt der index mit 1. demzufolger ist nachname[20] auch das 20. zeichen und nicht das 21.!



  • Für neue Fragen bitte immer auch einen neuen Thread benutzen. Natürlich nicht, ohne vorher ausführlich von der BCB-Hilfe, der FAQ und der Suchfunktion hier Gebrauch gemacht zu haben. Danke!


Anmelden zum Antworten