• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Potrzebuję konwersji zmiennej string do AnsiString

Object Storage Arubacloud
0 głosów
628 wizyt
pytanie zadane 17 listopada 2016 w C i C++ przez pepexd555 Początkujący (260 p.)
edycja 17 listopada 2016 przez pepexd555
Robię grę quiz w c++ builderze 6. Problem pojawia się kiedy chcę zmienić Caption Label'a na pytanie wczytane z pliku. Jak to konwertować ?

2 odpowiedzi

0 głosów
odpowiedź 17 listopada 2016 przez criss Mędrzec (172,590 p.)
wybrane 17 listopada 2016 przez pepexd555
 
Najlepsza

Nie moge nigdzie znaleźć dokumentacji buildera więc troche na czuja. Spróbuj tak:

Pyt->Caption = AnsiString(tresc[i].c_str());

 

komentarz 17 listopada 2016 przez pepexd555 Początkujący (260 p.)

Dziękismileysmiley

komentarz 17 listopada 2016 przez pepexd555 Początkujący (260 p.)
Ok wszystko działa tylko, że gdy klikam "Button1" to zamiast wyświetlić się pytanie tekst znika,  dlaczego?
komentarz 17 listopada 2016 przez criss Mędrzec (172,590 p.)

Ok wszystko działa tylko, że gdy klikam "Button1" to zamiast wyświetlić się pytanie tekst znika,  dlaczego?

To co w takim razie działa? :D

Tak swoją drogą - nie uważasz, że ładowanie całego pliku za każdym kliknięciem jest dość... dziwne? 

Poza tym:

     for (int i=0; i<=4; i++)
    {   
     Pyt->Caption = tresc[i].c_str();
    }

Ta pętla nie bardzo ma sens. Ustawiasz (nadpisujesz) 5 razy Pyt->Caption i zawsze i tak ostatecznie zostanie ustawione na tresc[4].

No i... czym jest Pyt?

komentarz 17 listopada 2016 przez pepexd555 Początkujący (260 p.)

Ok, Przycisk jest czymś w rodzaju rozpoczęciem gry.

Pyt to Label w którym ma wyświetlić się wczytane pytanie.

case 1: tresc[nr_pytania] = linia;       break;

 

komentarz 17 listopada 2016 przez criss Mędrzec (172,590 p.)
Nie wiem dlaczego nie działa. Nie wiem jaki tekst i skąd znika. I nigdy nic nie pisałem w builderze ( swoją drogą to nie wiem dlaczego ludzie to robią). Pewnie za mało kodu. Anyway - już ci napisałem co powinieneś zmienić, ale to raczej nie rozwiąże problemu.
0 głosów
odpowiedź 17 listopada 2016 przez Knayder Nałogowiec (37,640 p.)
nazwaString.c_str();

 

komentarz 17 listopada 2016 przez pepexd555 Początkujący (260 p.)
Dalej nie działa
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <algorithm>
#include <dstring.h>
#include <string.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

using namespace std;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{


}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int punkty=0;
string tresc[9];
tresc.c_str();
string odpA[9], odpB[9], odpC[9], odpD[9];
string poprawna[9];
string odpowiedz;
int nr_linii=1;
    string linia;
    int nr_pytania=0;

    fstream plik;
    plik.open("text/bin.txt",ios::in);


    while(getline(plik,linia))
    {
        switch(nr_linii)
        {

            case 1: tresc[nr_pytania] = linia;       break;
            case 2: odpA[nr_pytania] = linia;        break;
            case 3: odpB[nr_pytania] = linia;        break;
            case 4: odpC[nr_pytania] = linia;        break;
            case 5: odpD[nr_pytania] = linia;        break;
            case 6: poprawna[nr_pytania] = linia;    break;
        }

        if (nr_linii==6) {nr_linii=2; nr_pytania++;}
        nr_linii++;
    }

    plik.close();
   
     for (int i=0; i<=4; i++)
    {   tresc.c_str();
     Pyt->Caption = tresc[i];
    }
}
//---------------------------------------------------------------------------

 

komentarz 17 listopada 2016 przez Knayder Nałogowiec (37,640 p.)

c_str() konwertuje stringa na rzecz którego wywołałeś tą funkcję i go zwraca.
Nie zmienia samego stringa, a już na pewno nie całej tablicy :|
Jeżeli chcesz użyć tego to musisz to zrobić np. tak

tresc[2].c_str();

 

komentarz 17 listopada 2016 przez pepexd555 Początkujący (260 p.)
Gdzie to mam wpisać?
komentarz 17 listopada 2016 przez Knayder Nałogowiec (37,640 p.)
for (int i=0; i<=4; i++)
    {   
     Pyt->Caption = tresc[i].c_str();
    }

Przykład twojej pętli

komentarz 17 listopada 2016 przez Knayder Nałogowiec (37,640 p.)
#include <vcl.h>
#pragma hdrstop
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <algorithm>
#include <dstring.h>
#include <string.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 
using namespace std;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int punkty=0;
string tresc[9];
//tresc.c_str(); tresc to wskaznik na pierwszy element tablicy.....
string odpA[9], odpB[9], odpC[9], odpD[9];
string poprawna[9];
string odpowiedz;
int nr_linii=1;
    string linia;
    int nr_pytania=0;
 
    fstream plik;
    plik.open("text/bin.txt",ios::in);
 
 
    while(getline(plik,linia))
    {
        switch(nr_linii)
        {
 
            case 1: tresc[nr_pytania] = linia;       break;
            case 2: odpA[nr_pytania] = linia;        break;
            case 3: odpB[nr_pytania] = linia;        break;
            case 4: odpC[nr_pytania] = linia;        break;
            case 5: odpD[nr_pytania] = linia;        break;
            case 6: poprawna[nr_pytania] = linia;    break;
        }
 
        if (nr_linii==6) {nr_linii=2; nr_pytania++;}
        nr_linii++;
    }
 
    plik.close();
    
     for (int i=0; i<=4; i++)
    {   
     Pyt->Caption = tresc[i].c_str();
    }
}
//-------------------------

 

Podobne pytania

0 głosów
1 odpowiedź 459 wizyt
pytanie zadane 19 stycznia 2017 w C i C++ przez MrFraxis Początkujący (390 p.)
0 głosów
2 odpowiedzi 419 wizyt
pytanie zadane 4 lutego 2016 w C i C++ przez Darek Surdel Początkujący (380 p.)
0 głosów
1 odpowiedź 101 wizyt
pytanie zadane 6 stycznia 2016 w C i C++ przez niezalogowany

92,568 zapytań

141,420 odpowiedzi

319,622 komentarzy

61,954 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...