Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z ustawieniem wartości dla tablicy string

Ostatnio zmodyfikowano 2014-01-11 14:36
Autor Wiadomość
bbcodepl
Temat założony przez niniejszego użytkownika
Problem z ustawieniem wartości dla tablicy string
» 2014-01-11 14:11:01
Witam, mam jeden problem, który mi uniemożliwia dalsze tworzenie mojego projektu.
Otóż tworze okno "chat". Przy tworzeniu kolejnej wiadomości, inne poprzednie "przesuwają się" do góry, lecz program się crash'uje.

Kod:
C/C++
const int max_messages = 10;

bool message_alive[ max_messages ];
string message_text[ max_messages ];
int message_r[ max_messages ];
int message_g[ max_messages ];
int message_b[ max_messages ];

void create_message( string text, int r, int g, int b )
{
    ///pushing messages
    for( int i = 0; i < max_messages - 1; i++ )
    {
        message_alive[ max_messages - i ] = message_alive[( max_messages - i ) - 1 ];
        message_text[ max_messages - i ] = message_text[( max_messages - i ) - 1 ];
        message_r[ max_messages - i ] = message_r[( max_messages - i ) - 1 ];
        message_g[ max_messages - i ] = message_g[( max_messages - i ) - 1 ];
        message_b[ max_messages - i ] = message_b[( max_messages - i ) - 1 ];
    }
    ///new message
    message_alive[ 0 ] = true;
    message_text[ 0 ] = text;
    message_r[ 0 ] = r;
    message_g[ 0 ] = g;
    message_b[ 0 ] = b;
}

Sprawdzałem po kolei wszystkie tablice i ten problem występuje tylko przy "message_text". Prosiłbym o pomoc :)
P-101834
pekfos
» 2014-01-11 14:20:09
Wychodzisz poza zakres tablicy (i = 0).
P-101835
bbcodepl
Temat założony przez niniejszego użytkownika
» 2014-01-11 14:24:34
Nie, ponieważ wyznaczyłem dla i zakres od 0 do (max_messages - 1), czyli nie może przekroczyć tej granicy.
Po za tym jak zmienię jej granice do (i < 1) - także się crashuje.
P-101836
pekfos
» 2014-01-11 14:27:21
Wychodzisz poza zakres tablicy.
C/C++
string message_text[ max_messages ];
//..
// dla i = 0
message_text[ max_messages ] = message_text[ max_messages - 1 ];
P-101837
bbcodepl
Temat założony przez niniejszego użytkownika
» 2014-01-11 14:36:39
Hm, to dlaczego tylko przez tą tablice "string" cały program mi się crash'uje, kiedy inne tablice - typu bool, double - mają taką samą czynność do wykonania, a program nie szwankuje?

EDIT*
Dobra dzięki pefkos ;) Może cię trochę czasem nie zrozume ale zrozumiałem oco chodzi i odjąłem wszystkie wartości o 1 i działa
C/C++
message_alive[ max_messages - i - 1 ] = message_alive[( max_messages - i ) - 2 ];
message_text[ max_messages - i - 1 ] = message_text[( max_messages - i ) - 2 ];
message_r[ max_messages - i - 1 ] = message_r[( max_messages - i ) - 2 ];
message_g[ max_messages - i - 1 ] = message_g[( max_messages - i ) - 2 ];
message_b[ max_messages - i - 1 ] = message_b[( max_messages - i ) - 2 ];
P-101839
« 1 »
  Strona 1 z 1