Dziwny problem: pętla for

dział ogólny

Dziwny problem: pętla for

Nowy postprzez wargo » sobota, 24 października 2009, 15:13

Dlaczego po użyciu pętli for dalsza część kodu nie jest wykonywana?
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
Podziękował : 12
Otrzymał podziękowań: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    NieznanyNieznana

Re: Dziwny problem:pętla for

Nowy postprzez polymorphism » sobota, 24 października 2009, 15:21

To jest żart?
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
    NieznanyNieznana

Re: Dziwny problem:pętla for

Nowy postprzez Cyfrowy Baron » sobota, 24 października 2009, 22:23

A możesz podać przykład takiej pętli?
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Dziwny problem:pętla for

Nowy postprzez wargo » niedziela, 25 października 2009, 16:40

Kod: Zaznacz cały
for (int x = 0; x<=Styles->Styles->Count;x++)
{
StylesList->Items->Add(Styles->Styles->Items[x]->Name);
}
//ta pętla już sie nie wykona chyba że ją dam na górę:
for (int y = 0; y<=Language->Keywords->Count;y++)
{
KeywordsG->Items->Add(Language->Keywords->Items[y]->Name);
}
//...
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
Podziękował : 12
Otrzymał podziękowań: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    NieznanyNieznana

Re: Dziwny problem:pętla for

Nowy postprzez Cyfrowy Baron » niedziela, 25 października 2009, 17:28

Kod: Zaznacz cały
//ta pętla już sie nie wykona chyba że ją dam na górę:
for (int y = 0; y<=Language->Keywords->Count;y++)
{
KeywordsG->Items->Add(Language->Keywords->Items[y]->Name);
}



Wykona się, o ile Language->Keywords->Count jest większe lub równe 0, a może mieć wartość -1, gdy lista nic nie zawiera.
Pętle wewnątrz funkcji wykonują się jedna po drugiej, o ile nie umieścisz wewnątrz pętli funkcji return.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Dziwny problem:pętla for

Nowy postprzez Witold » niedziela, 25 października 2009, 23:58

wargo napisał(a):
Kod: Zaznacz cały
for (int x = 0; x<=Styles->Styles->Count;x++)
{
StylesList->Items->Add(Styles->Styles->Items[x]->Name);
}
//ta pętla już sie nie wykona chyba że ją dam na górę:
for (int y = 0; y<=Language->Keywords->Count;y++)
{
KeywordsG->Items->Add(Language->Keywords->Items[y]->Name);
}
//...


0 i x<=Styles->Styles->Count tak na pewno można przy tym obiekcie ? bo gdyby nie, byłby pewnie rzucony wyjątek (przy Items[x]->Name), druga pętla by się nie wykonała … tyle że całość musiałaby być w bloku try{} catch(){} (który by "całkowicie złapał" ten wyjątek, inaczej być go zobaczył). Mało prawdopodobne.

Nie napisałeś z jakiej biblioteki są te obiekty i jaki jest ich typ (Styles, StylesList, Language, KeywordsG).To Delphisci ?
Avatar użytkownika
Witold
Konstrukcjonista
Konstrukcjonista
 
Posty: 223
Dołączył(a): piątek, 29 sierpnia 2008, 10:53
Podziękował : 1
Otrzymał podziękowań: 14
Kompilator: bcb6, Turbo C++ Explorer
    NieznanyNieznana

Re: Dziwny problem:pętla for

Nowy postprzez Cyfrowy Baron » poniedziałek, 26 października 2009, 13:02

Proponuję sprawdzić jaka wartość jest zwraca. Poza tym, jeżeli masz wątpliwości co do tego czy kod przerobił drugą pętle możesz umieścić komunikat na końcu funkcji.

Kod: Zaznacz cały
    for (int x = 0; x <= Styles->Styles->Count; x++)
    {
      StylesList->Items->Add(Styles->Styles->Items[x]->Name);
    }
   
   ShowMessage( (String) Language->Keywords->Count );

    for (int y = 0; y <= Language->Keywords->Count; y++)
    {
      KeywordsG->Items->Add(Language->Keywords->Items[y]->Name);
    }

      ShowMessage("Koniec funkcji");
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Dziwny problem:pętla for

Nowy postprzez wargo » poniedziałek, 26 października 2009, 16:08

Cyfrowy Baron napisał(a):Proponuję sprawdzić jaka wartość jest zwraca. Poza tym, jeżeli masz wątpliwości co do tego czy kod przerobił drugą pętle możesz umieścić komunikat na końcu funkcji.

Po pierwszej pętli nic dalej się nie wykonuje, ani kolejna pętla ani żadna funkcja.
Jak pierwszą pętlę dam jako drugą to wtedy się wykona właśnie ta co jest na górze a ta co na dole nie :|
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
Podziękował : 12
Otrzymał podziękowań: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    NieznanyNieznana

Re: Dziwny problem: pętla for

Nowy postprzez Cyfrowy Baron » poniedziałek, 26 października 2009, 18:22

To wręcz nieprawdopodobne. Co to za obiektu: Styles; StylesList; Language; KeywordsG;

Może podasz kod całej funkcji, czyli z nagłówkiem, ciałem funkcji i całą resztą.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Dziwny problem: pętla for

Nowy postprzez wargo » poniedziałek, 26 października 2009, 21:11

Zamieniłem teraz z <= na < i działa normalnie :roll:
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
Podziękował : 12
Otrzymał podziękowań: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    NieznanyNieznana

Re: Dziwny problem: pętla for

Nowy postprzez Cyfrowy Baron » wtorek, 27 października 2009, 08:40

Działa, ale nie odkryłeś istoty problemu, więc w dalszej pracy nad programem może to wywołać kolejne błędy.

Poza tym nie podałeś nam tutaj całej prawdy. W wcześniejszym kodzie podałeś zmienne x i y, a teraz piszesz, że zmieniłeś z <= na z < coś więc tutaj kręcisz...
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Dziwny problem: pętla for

Nowy postprzez wargo » wtorek, 27 października 2009, 15:18

Cyfrowy Baron napisał(a):Poza tym nie podałeś nam tutaj całej prawdy. W wcześniejszym kodzie podałeś zmienne x i y, a teraz piszesz, że zmieniłeś z <= na z < coś więc tutaj kręcisz...

nie rozumiem, są zmienne x i y ale znajdowało się też coś takiego: <= i to zamieniłem na <.
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
Podziękował : 12
Otrzymał podziękowań: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    NieznanyNieznana

Re: Dziwny problem: pętla for

Nowy postprzez Cyfrowy Baron » wtorek, 27 października 2009, 15:28

Ok! Tak piszesz, że źle Ciebie zrozumiałem. Niemniej jednak nie rozwiązałeś problemu, tylko go obszedłeś, gdyż nie ustaliłeś co było przyczyną nieprawidłowego działania pętli. Pomogła zmiana warunku miałeś dopóki x jest mniejsze lub równe od Styles->Styles->Count, zmieniłeś na dopóki x jest mniejsze od Styles->Styles->Count, tak wiec tutaj tkwi istota problemu, ale trudno stwierdzić, gdyż nie podałeś na jakich obiektach pracujesz, no ale to wyjdzie w dalszych pracach nad programem...
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana


  • 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 4 gości