imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 15.12.2006, 18:12     # 1
alexksei
Newbie
 
Регистрация: 19.11.2004
Сообщения: 45

alexksei Нуль без палочки
С++ программа работает не у всех

Вообшем программа на некоторых компах работает, на некоторых нет, не знаю что за фигня...НА ХР работает, на 2000 нет..
Вообшем не знаю почему, может это както зависит от версии винды или еще от чегото, подскажите как возможно устранить это.

Код приаттачил
Вложения
Тип файла: rar progr.rar (9.0 Кбайт, 30 просмотров - Кто скачивал? )
alexksei вне форума  
Старый 15.12.2006, 18:28     # 2
vovik
IMHO Ворчун-2006
 
Аватар для vovik
 
Регистрация: 24.03.2003
Адрес: Москва
Пол: Male
Сообщения: 4 651

vovik СуперБогvovik СуперБогvovik СуперБог
vovik СуперБогvovik СуперБогvovik СуперБогvovik СуперБогvovik СуперБогvovik СуперБогvovik СуперБогvovik СуперБогvovik СуперБогvovik СуперБогvovik СуперБогvovik СуперБог
Может для начала не код надо приаттачивать, а написать с какими сообщениями не запускается? На что жалуется, какие ошибки выдает.
Скорее всего она обращается к библиотекам/компонентам, которых в 2000 нет или они не той версии.
Например у меня есть программа, которая требует MS Data Access Component версии 2,7 и выше. Поэтому на Win2000 без 4 сервиспака не работает
vovik вне форума  
Старый 15.12.2006, 22:05     # 3
alexksei
Newbie
 
Регистрация: 19.11.2004
Сообщения: 45

alexksei Нуль без палочки
ну программа на 2000 компилируеца там все ОК, но после уже запуска программы выдается ошибка, Programm has generated errors, вообшем видосовая, без всяких подсказок к решению проблеммы...

вообшем я пробовал ствить getch() после каждой строки и в итоге выяснил что ошибка выдается на строке atoi(pos), при том что на ХР и в этой строке и во всех последующих все ок....
alexksei вне форума  
Старый 16.12.2006, 01:39     # 4
Willow
Junior Member
 
Регистрация: 23.12.2003
Адрес: Киев
Сообщения: 118

Willow Реально крут(а)Willow Реально крут(а)Willow Реально крут(а)Willow Реально крут(а)
посмотрел
ну dll нужны следующие: kernel32, msvcrt вроде как есть везде.

Запустил под 2000 из под VMWare - таки есть проблема.
Судя по SoftIce ошибка в коде startup, при вызове ___mingw_CRTStartup.
Чего оно происходит сказать сходу не могу.
Хотя если я правильно понимаю это связано с проверкой стека.
Возможно надо увеличить объем стека в директивах компилятора, или выделать память динамически а не обявлять сразу как rid[400], хотя странно это вроде не так уж и много.
Willow вне форума  
Старый 16.12.2006, 03:29     # 5
Oaxa
Junior Member
 
Аватар для Oaxa
 
Регистрация: 04.08.2004
Адрес: 55°45'50"N - 37°51'52"E
Сообщения: 96

Oaxa Реально крут(а)Oaxa Реально крут(а)Oaxa Реально крут(а)Oaxa Реально крут(а)
Цитата:
Willow:
msvcrt вроде как есть везде
Если мне не изменяет память, MSVCRT.DLL (Microsoft Visual C++ Run Time library) есть не везде, а устанавливается вместе с Microsoft Visual Studio (и некоторыми другими программами)

Попробуй проверить pos на NULL перед atoi.
Oaxa вне форума  
Старый 16.12.2006, 18:49     # 6
PinGUIWin
Junior Member
 
Аватар для PinGUIWin
 
Регистрация: 08.11.2006
Адрес: Quantizer
Сообщения: 67

PinGUIWin Путь к славе только начался
Цитата:
Willow:
Возможно надо увеличить объем стека в директивах компилятора, или выделать память динамически а не обявлять сразу как rid[400], хотя странно это вроде не так уж и много.
Можно rid[400] сделать глобальной, если заработает -- то было мало стека.
__________________
Matrix has you...
PinGUIWin вне форума  
Старый 17.12.2006, 00:58     # 7
Willow
Junior Member
 
Регистрация: 23.12.2003
Адрес: Киев
Сообщения: 118

Willow Реально крут(а)Willow Реально крут(а)Willow Реально крут(а)Willow Реально крут(а)
Цитата:
Сообщение от Oaxa
Если мне не изменяет память, MSVCRT.DLL (Microsoft Visual C++ Run Time library) есть не везде, а устанавливается вместе с Microsoft Visual Studio (и некоторыми другими программами)

Попробуй проверить pos на NULL перед atoi.
Влюбом случае при отсутствии нужной dll винда так и говорит, а не Accsess Violation порождает, так что даже если этой длл и нету сама проблема не вэтом.
Willow вне форума  
Старый 17.12.2006, 11:18     # 8
yan_kos
Junior Member
 
Аватар для yan_kos
 
Регистрация: 16.07.2005
Адрес: Украина, г. Ровно
Пол: Male
Сообщения: 140

yan_kos Известность не заставит себя ждать
Цитата:
Oaxa:
Попробуй проверить pos на NULL перед atoi.
Так и есть там 0
2 alexksei
Вы конечно можете писать как хотите но не советую выделять массивчики не так как Вы делаете. Я понимаю что робота с памятю геморна но всьо же мой компилятор очень "матерился" на создание стековых массивов с не константными значениями размеров
Цитата:
int i=0;
......
float massiv [i];
И ищо у Вас нету проверок на валидность результатов ф-и например тот же
Цитата:
pos=strtok(NULL,".dm_");
у меня сразу же выдал 0. Или например
Цитата:
fp=fopen(fail,"w");
Нету проверки открыт ли файл.
Вообщем советую посмотреть на стиль кодинга у хорошего знакомого программиста или поищите в Гугле статьи на эту тему.
И напоследок не пишыте так "свободно" на С++, это не скриптовый язык всьо же
__________________
Та программа не глючит, которая не написана
yan_kos вне форума  
Старый 17.12.2006, 21:43     # 9
alexksei
Newbie
 
Регистрация: 19.11.2004
Сообщения: 45

alexksei Нуль без палочки
yan_kos, пасиба за советы, действительно моя проблемма - безалаберность если чтото пишу, то как попадёт, а не по правилам...буду стараться совершенствоваться ....и вопрос - как я могу создать массив с константным значением размера, если он неизвестен заранее и вообшемто может быть любым...


И всем пасиба за советы, буду пробовать, правда щас не имею доступа к Win 2000, так что проверить не могу... если у кого то есть еще какието догадки, пишите, буду благодарен
alexksei вне форума  
Старый 18.12.2006, 11:05     # 10
yan_kos
Junior Member
 
Аватар для yan_kos
 
Регистрация: 16.07.2005
Адрес: Украина, г. Ровно
Пол: Male
Сообщения: 140

yan_kos Известность не заставит себя ждать
Цитата:
alexksei:
как я могу создать массив с константным значением размера, если он неизвестен заранее и вообшемто может быть любым
Для этого используйте динамический массив
<тип даных>* <переменная>=new <тип даных> <размер>;
Цитата:
float * massiv=new float [i];
В таком случае память под массив будет выделяться не в стеке а на куче
то бишь ее нужно потом будет по чистить:
Цитата:
delete massiv;
Чистку производить после того как массив будет "не нужным".
__________________
Та программа не глючит, которая не написана
yan_kos вне форума  
Старый 19.12.2006, 14:07     # 11
PSyton
Junior Member
 
Аватар для PSyton
 
Регистрация: 19.04.2002
Адрес: Дом
Пол: Male
Сообщения: 187

PSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форуме
2 alexksei
Прошу прощения, но код просто жуткий.. Это не C++..
Вопрос - зачем складывать имена файлов в массив? Может сразу и удалять?
__________________
Дураки не динозавры - они не вымрут...
PSyton вне форума  
Старый 19.12.2006, 18:55     # 12
alexksei
Newbie
 
Регистрация: 19.11.2004
Сообщения: 45

alexksei Нуль без палочки
Цитата:
Сообщение от PSyton
2 alexksei
Прошу прощения, но код просто жуткий.. Это не C++..
Вопрос - зачем складывать имена файлов в массив? Может сразу и удалять?
НУ код может и жуткий, но без массива обойтись был никак, так как стираю я не все файлы подряд, прчитайте код, потом говорите или предложите код без массива
alexksei вне форума  
Старый 20.12.2006, 06:43     # 13
PSyton
Junior Member
 
Аватар для PSyton
 
Регистрация: 19.04.2002
Адрес: Дом
Пол: Male
Сообщения: 187

PSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форуме
Цитата:
Сообщение от alexksei
...но без массива обойтись был никак, так как стираю я не все файлы подряд,...
Без проблем. Приду вечером с работы и уделю немного времени написанию примера.
А вообще - поиск максимума/минимума делается за один проход.
---
Вот архив с маленьким примером. Совсем без массива конечно нельзя, т.к. учитываются доп критерии. Но проход все же 1. Насчет того правильно ли это работает - не проверял не на чем, да и некогда. Пример (VS2005) сделан дабы показать идею и C++.

P.S.
Перезалил - забыл 2 строки.
Вложения
Тип файла: zip TestProg.zip (4.1 Кбайт, 4 просмотров - Кто скачивал? )
__________________
Дураки не динозавры - они не вымрут...

Последний раз редактировалось PSyton; 21.12.2006 в 06:36.
PSyton вне форума  
Старый 21.12.2006, 19:49     # 14
alexksei
Newbie
 
Регистрация: 19.11.2004
Сообщения: 45

alexksei Нуль без палочки
Цитата:
Сообщение от PSyton
Без проблем. Приду вечером с работы и уделю немного времени написанию примера.
А вообще - поиск максимума/минимума делается за один проход.
---
Вот архив с маленьким примером. Совсем без массива конечно нельзя, т.к. учитываются доп критерии. Но проход все же 1. Насчет того правильно ли это работает - не проверял не на чем, да и некогда. Пример (VS2005) сделан дабы показать идею и C++.

P.S.
Перезалил - забыл 2 строки.
Пасиба, посмотрю, изучу =) НА счет одного прохода, я знаю, просто мне пока было главное выяснить как сделать чтоб работало везде, а потом бы я подумал над остальным Ведь минимум надо искать не из всех файлов, а по критериям, я бы сделал это позже..
alexksei вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 03:18.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.