|
2 / 2 / 1
Регистрация: 27.07.2009
Сообщений: 75
|
|
функция strcat30.07.2009, 17:49. Показов 3319. Ответов 1
Метки нет (Все метки)
Добрый день!Помогите решить проблему...Пишу mp3 плеер.После запуска работает нормально, но после выбора одного или нескольких файлов выдает окно с ошибкой и открывает в проекте файл strcat.asm и в нем указатель стоит на против строки mov [edi],dl...Если отключить функцию вывода плейлиста,то тогда все работает...
функция вывода плейлиста в окно: void Playlist(HDC hdc) { char buf[20]; char* str; RECT* frame = new RECT; HBRUSH yellow_brush; HBRUSH old_brush; HFONT font, font1, font2; font1 = CreateFont(height_symbol, width_symbol, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, "Arial Italic"); font2 = CreateFont(height_symbol, width_symbol, 0, 0, 0, 5, 0, 0, 5, 0, 0, 5, 0, "Arial Italic"); COLORREF white = RGB(255, 255, 255), blue = RGB(0, 0, 255), green = RGB(0, 255, 0), red = RGB(255, 0, 0), color_num, color_text, color_time, color; yellow_brush = CreateSolidBrush(RGB(255, 255, 0)); frame->left = 0; frame->top = 0; frame->right = 300; frame->bottom = height_symbol; for(int pos = initial_pos_list; pos <= counter_track; pos++) { int num_track = pos+1; int pos_track = (pos-initial_pos_list)*(height_symbol+interva l_str)+interval_str; if(pos == choose_track) { old_brush = (HBRUSH)SelectObject(hdc, yellow_brush); Rectangle(hdc, frame->left, frame->top+pos_track, frame->right, frame->bottom+pos_track); SelectObject(hdc, old_brush); color_num = blue; color_text = blue; color_time = blue; font = font2; } else { color_num = green; color_text = white; color_time = red; font = font1; } if(num_track < 10) sprintf(buf, " 000%d ", num_track); else if(num_track < 100) sprintf(buf, " 00%d ", num_track); else if(num_track < 1000) sprintf(buf, " 0%d ", num_track); color = color_num; PrintText(hdc, 0, pos_track, buf, color, font); if(strlen(list_music[pos]->name) > 27) { str = new char[28]; memset(str,'\0',sizeof(char)); strncpy(str, list_music[pos]->name, 24); strcat(str, "..."); } else strcpy(str, list_music[pos]->name); color = color_text; PrintText(hdc, 7*width_symbol, pos_track, str, color, font); color = color_time; PrintText(hdc, 35*width_symbol, pos_track, list_music[pos]->time, color, font); } } функция PrintText(): void PrintText(HDC hdc, int x, int y, char* str, COLORREF color, HFONT font) { SelectObject(hdc, font); SetBkMode(hdc, TRANSPARENT); COLORREF old_color = SetTextColor(hdc, color); TextOut(hdc, x, y, str, strlen(str)); SetTextColor(hdc, old_color); } Добавлено через 2 минуты 0 секунд работаю в visual studio 2005 Добавлено через 13 минут 41 секунду только что проверил и нашел слабое место...Если закомментировать участок if(strlen(list_music[pos]->name) > 27) { str = new char[28]; memset(str,'\0',28); strncpy(str, list_music[pos]->name, 24); strcat(str, "..."); } else strcpy(str, list_music[pos]->name); а вместо этого написать str = new char[size]; strcpy(str, list_music[pos]->name); только теперь длинные имена не обрезаются... Подскажите пожалуйста в чем у меня ошибка
0
|
|
| 30.07.2009, 17:49 | |
|
Ответы с готовыми решениями:
1
Не работает strcat Глюк при вызове strcat. Функция strcat |
|
Maniac
|
||||||
| 30.07.2009, 17:56 | ||||||
Сообщение было отмечено larry как решение
Решение
А std::string использовать религия не позволяет?
0
|
||||||
| 30.07.2009, 17:56 | |
|
Помогаю со студенческими работами здесь
2
функция strcat функция strcpy и strcat Не работает функция strcat Что делает функция strcat(t, f)
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|