powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Access violation...
13 сообщений из 13, страница 1 из 1
Access violation...
    #32896802
Sr. Melifaro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
// ----- Перевод из Win в Dos кодировку...
String WinToDos(String Stroka)
{
 String OutString;
 AnsiToOem(Stroka.c_str(), OutString.c_str());
 return OutString;
}

// ----- Запись файла...
   FILE *gpl;

   String Text = WinToDos(FileText->Text);

   gpl = fopen("Gpl00101.crd","a");

   char *a = new char[Text.Length()];
   strcpy(a,Text.c_str());

   fputs(a, gpl);
   fclose(gpl);

   StatusBar->SimpleText="Запись произведена!";

Этот код после выполнения производит запись в файл так как надо, но программа выдает Access violation...

Подскажите пожалуйста, в чем ошибка? У меня подозрение на то, что я не правильно передаю параметр в функцию... Или не правильно получаю из функции...

ЗЫ: Работаю с BC++ 6.0
...
Рейтинг: 0 / 0
Access violation...
    #32896823
Фотография Lelikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как минимум в "new char[..]" надо выделять длина_строки + 1 место из-за нулевого завершающего маркера
________________________________________________________
Глюк - это высокоорганизованная система не поддающихся определению частиц
...
Рейтинг: 0 / 0
Access violation...
    #32896839
Sr. Melifaro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Упсь... поправил, только реакции нет... результат тот же...
...
Рейтинг: 0 / 0
Access violation...
    #32896896
Steppenwulf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Вас FileText->Text в какой-то момент передается пустым...
...
Рейтинг: 0 / 0
Access violation...
    #32896913
Sr. Melifaro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не может быть... Перед этим кодом стоит строка:
Код: plaintext
1.
FileText->Text = "* GPL00101.CRD    Последнее изменение: 01.02.05     Создано: 01.02.05\n";
...
Рейтинг: 0 / 0
Access violation...
    #32896917
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В WinToDos проблема:

Код: plaintext
1.
String OutString; && пустая строка
AnsiToOem(Stroka.c_str(), OutString.c_str()); && растел памяти по адресу  0 , который вернула OutString.c_str()
...
Рейтинг: 0 / 0
Access violation...
    #32896935
Sr. Melifaro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не понял... можно поподробнее объяснить?
...
Рейтинг: 0 / 0
Access violation...
    #32896950
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я достаточно подробно объснил.
...
Рейтинг: 0 / 0
Access violation...
    #32896961
Sr. Melifaro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что значит "растел памяти по адресу 0"?
...
Рейтинг: 0 / 0
Access violation...
    #32896968
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это он и есть Access violation.
...
Рейтинг: 0 / 0
Access violation...
    #32896984
Sr. Melifaro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тоесть ошибка в том, что OutString - пустой.
Код: plaintext
1.
2.
String OutString = Stroka;
AnsiToOem(Stroka.c_str(), OutString.c_str());
Должно быть так?
...
Рейтинг: 0 / 0
Access violation...
    #32897011
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообщем, Вам надо OutString инициализировать так, чтобы OutSting вместил все символы исходной строки Text. То что Вы привели это один из способов достижения этого.
...
Рейтинг: 0 / 0
Access violation...
    #32897021
roman10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да.

А еще у вас ошибка при записи файла. При копировании строки вы не добавляете в конец завершающий нуль. И вообще операция копирования лишняя.

Можно и так:
fputs(Text.c_str(), gpl);
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Access violation...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]