CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Pobranie danych ze stringa

Pobranie danych ze stringa

dział ogólny

Pobranie danych ze stringa

Nowy postprzez son_doobie » czwartek, 12 stycznia 2012, 20:50

Witam mam pewien problem z pobraniem wartości ze stringa. Chodzi o to, że po pobraniu linii tekstu z pola
KOD cpp:     UKRYJ  
Memo->Lines->Strings[5]

otrzymuje na przykład taki ciąg 00 01 11 10. Teraz chciałbym poszczególne wartości tego ciągu powpisywać w komórki tablicy, czyli np. tab[0] = 00, tab[1] = 01, tab[2] = 11, tab[3] = 10. Jak można to zrobić? Domyślam się, że trzeba wczytywać stringa do znaku podziału(w tym przypadku spacji), ale jak to zrobić?

Takie coś nie działa:
KOD cpp:     UKRYJ  
void __fastcall TForm1::open_kissClick(TObject *Sender)
{
        OpenDialog1->Execute();
        Edit1->Text = OpenDialog1->FileName;
        Memo1->Lines->LoadFromFile(OpenDialog1->FileName);

        kiss2 = Memo1->Lines->Text;
        for(int i=0; i<kiss2.Length(); i++)
        {
                if(kiss2[i]!= ' ')
                {
                        tmp += kiss2[i];
                }
                else
                {
                        tabIn[tabIndex] = tmp;
                        tmp = "";
                        tabIndex++;
                }
        }
}
Avatar użytkownika
son_doobie
Bladawiec
Bladawiec
 
Posty: 3
Dołączył(a): czwartek, 12 stycznia 2012, 20:46
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: brak kompilatora
Gadu Gadu: 0
    Windows XPFirefox

Re: Pobranie danych ze stringa

Nowy postprzez polymorphism » czwartek, 12 stycznia 2012, 23:12

Nie działa, bo? Kod wygląda OK, tylko nie wiadomo, gdzie są definicje lokalnych zmiennych kiss2 i tmp.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Pobranie danych ze stringa

Nowy postprzez son_doobie » piątek, 13 stycznia 2012, 13:12

Nie działa nie wiem sam właściwie czemu. Kompilator wywala mi błędy, chyba chodzi o przekroczenie jakiegoś zakresu. Wygląda to mniej więcej tak: http://imageshack.us/f/254/blad1m.jpg/http://imageshack.us/f/9/xxxuru.jpg/.
A zmienne zadeklarowane tu:
KOD cpp:     UKRYJ  
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
String tmp, kiss2, tabIn[1000];
ofstream zapis;
int input, output, states, p, tabIndex = 0;


Przy zadeklarowaniu w środku funkcji obsługi zdarzenia też nie działa.
KOD cpp:     UKRYJ  
void __fastcall TForm1::open_kissClick(TObject *Sender)
{
        String tmp, kiss2, tabIn[1000];
       
        OpenDialog1->Execute();
        Edit1->Text = OpenDialog1->FileName;
        Memo1->Lines->LoadFromFile(OpenDialog1->FileName);

        kiss2 = Memo1->Lines->Text;
        for(int i=0; i<kiss2.Length(); i++)
        {
                if(kiss2[i]!= ' ')
                {
                        tmp += kiss2[i];
                }
                else
                {
                        tabIn[tabIndex] = tmp;
                        tmp = "";
                        tabIndex++;
                }
        }
}
Avatar użytkownika
son_doobie
Bladawiec
Bladawiec
 
Posty: 3
Dołączył(a): czwartek, 12 stycznia 2012, 20:46
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: brak kompilatora
Gadu Gadu: 0
    Windows XPFirefox

Re: Pobranie danych ze stringa

Nowy postprzez son_doobie » piątek, 13 stycznia 2012, 13:26

Ok, już wiem:
w pętli powinno być
KOD cpp:     UKRYJ  
for(int i=1; i<kiss2.Length(); i++)
Avatar użytkownika
son_doobie
Bladawiec
Bladawiec
 
Posty: 3
Dołączył(a): czwartek, 12 stycznia 2012, 20:46
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: brak kompilatora
Gadu Gadu: 0
    Windows XPFirefox

Re: Pobranie danych ze stringa

Nowy postprzez polymorphism » piątek, 13 stycznia 2012, 14:34

Heh, no właśnie, pieprzony String i jego pascalowe naleciałości, między innymi w postaci indeksowania od jednego, jak w przedszkolu ;)

p.s. warunek pętli powinieneś zmienić z < na <=.

Jeszcze odnośnie zmiennych. Jeśli zmienne używane są przez jedną funkcję, ich użycie ma charakter lokalny, to zawsze deklaruj je jako zmienne lokalne, na stosie. To znacznie poprawia czytelność i użyteczność kodu. W C++ zmienne globalne to rzadkość, a ich nadużywanie to proszenie się o kłopoty.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 5 gości