Добавьте еще ColorAnimation
в Storyboard
и установите для его свойства BeginTime
значение, большее или равное Duration
первого, например :
<EventTrigger RoutedEvent="ContentChanged">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation BeginTime="0:0:0" Duration="0:0:1"
Storyboard.TargetProperty="(Label.Background).(SolidColorBrush.Color)"
To="Yellow"/>
<ColorAnimation BeginTime="0:0:1" Duration="0:0:1"
Storyboard.TargetProperty="(Label.Background).(SolidColorBrush.Color)"
To="White"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
Вы не можете инициализировать массивы из других массивов или указателей. И вы также не можете назначить массивы.
Таким образом,
char destino[4] = arg_struct->porto;
является недействительным.
Есть два способа решения этой проблемы для вас:
Положитесь на тот факт, что массивы естественным образом распадаются на указатели на их первый элемент. То есть, если ожидается указатель, то arg_struct->porto
равно &arg_struct->porto[0]
. Это означает, что вы можете
char *destino = arg_struct->porto;
вообще не иметь никакой переменной destino
и передавать arg_struct->porto
непосредственно на ваши strcmp
вызовы:
if (strcmp(arg_struct->porto, "BUS") == 0) ...
[ 1118] Также обратите внимание, что strcmp
возвращает ноль , если две строки равны. Вот причина сравнения равенства с нулем выше.
Невозможность присвоить массиву также является причиной того, что такие операторы, как
parque[i][j].nSerie = "";
, потерпят неудачу.
Если вы хотите, чтобы массивы работали как пустые строки, все, что вам нужно сделать, это установить первый элемент в нулевой терминатор:
parque[i][j].nSerie[0] = '\0'; // Make string "empty"
Если вы хотите очистить все байты массива, вы необходимо использовать функцию memset
:
memset(parque[i][j].nSerie, 0, sizeof parque[i][j].nSerie); // "Clear" array