• 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

VPS Starter Arubacloud
0 głosów
606 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ź 453 wizyt
pytanie zadane 19 stycznia 2017 w C i C++ przez MrFraxis Początkujący (390 p.)
0 głosów
2 odpowiedzi 400 wizyt
pytanie zadane 4 lutego 2016 w C i C++ przez Darek Surdel Początkujący (380 p.)
0 głosów
1 odpowiedź 99 wizyt
pytanie zadane 6 stycznia 2016 w C i C++ przez niezalogowany

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...