Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
 Аватар для davian
4 / 4 / 2
Регистрация: 07.07.2009
Сообщений: 122

Исчезает значение String

22.09.2010, 09:41. Показов 992. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть выражение:

C++
1
2
String DatFileName = FPath + FFName + ".dat";
fIn=fopen(DatFileName.t_str(), "rb");
FPath и FFName значения типа String. До выполнения второй строчки в представленном фрагменте, значения такие как надо. После выполнения этой строчки значение DatFileName такое
{ "㩄獜牫獺景屴浩条獥ぜ〰弸⸲慤Lg杤ę杤ę⧄" }
Примерно... Короче чушь появляется... Кто знает по какой причиной это происходит?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.09.2010, 09:41
Ответы с готовыми решениями:

Почему исчезает значение в текстовом поле
Доброго дня! Столкнулся с такой неприятностью. Если программно заполняю текстовые поля из базы данных а потом хочу что то...

Исчезает значение переменной
Dobryj den'! Kto-nibud' kogda-nibud' stalkivalsja s takoj problemoj: Est' kod: Feature currentFeature = new Feature(); ...

Какое одинаковое значение можно вернуть из функций <string> f () и vector < <string> > f()?
Понятное дело, что всё обсуждение будет вертеться вокруг аналога NULL. char* f_0 () { return NULL; } char** f_1 () { ...

8
 Аватар для voalex
32 / 32 / 8
Регистрация: 21.10.2009
Сообщений: 97
22.09.2010, 10:01
Цитата Сообщение от davian Посмотреть сообщение
DatFileName.t_str()
C++
1
]DatFileName.c_str()
Попробуйте так.
0
 Аватар для davian
4 / 4 / 2
Регистрация: 07.07.2009
Сообщений: 122
22.09.2010, 10:06  [ТС]
Цитата Сообщение от voalex Посмотреть сообщение
C++
1
]DatFileName.c_str()
Попробуйте так.
Ошибки:

[BCC32 Error] nnn.cpp(89): E2034 Cannot convert 'wchar_t *' to 'const char *'
[BCC32 Error] nnn.cpp(89): E2342 Type mismatch in parameter '__path' (wanted 'const char *', got 'wchar_t *')
0
 Аватар для voalex
32 / 32 / 8
Регистрация: 21.10.2009
Сообщений: 97
22.09.2010, 10:12
Попробуйте AnsiString, а потом char. Я когда-то что подобное делал, тоже с типами намудрил))
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
22.09.2010, 10:22
davian, всё правильно, так и должно быть.
Используя метод t_str() вы делаете запрос на возврат копии значения типа (char *).
Нигде не оговаривается, что участок памяти будет неизменным на всём промежутке выполнения программы.
Если вам нужно сохранить постоянное значение, то нужно создать символьный массив:
C++
1
2
3
4
5
6
String Text = "Hello World";
char *Temp = new char [Text.Length()+1];
strcpy(Temp,Text.t_str());
// действия
delete []Temp;
Temp = NULL;
Только объясните, зачем вам это?
Чем не устраивает вызов метода t_str() в случае необходимости?
0
 Аватар для davian
4 / 4 / 2
Регистрация: 07.07.2009
Сообщений: 122
22.09.2010, 10:48  [ТС]
Цитата Сообщение от MikeSoft Посмотреть сообщение

Только объясните, зачем вам это?
Чем не устраивает вызов метода t_str() в случае необходимости?
Я не совсем понял вопрос. Вроде бы я так и делаю... Т.е. вызываю метод t_str(). Но мне необходимо, чтобы после вызова этого метода, у меня исходное значение, которое хранится в переменной типа String, оставалось неизменным, поскольку я с этим значением именно в таком виде далее работаю...
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
22.09.2010, 11:19
davian, в переменной должно остаться необходимое значение.
Проверьте:
C++
1
2
3
String DatFileName = "C:\\boot.ini";
FILE *fIn=fopen(DatFileName.t_str(), "rb");
ShowMessage(DatFileName);
0
 Аватар для davian
4 / 4 / 2
Регистрация: 07.07.2009
Сообщений: 122
22.09.2010, 11:45  [ТС]
Цитата Сообщение от MikeSoft Посмотреть сообщение
davian, в переменной должно остаться необходимое значение.
Проверьте:
C++
1
2
3
String DatFileName = "C:\\boot.ini";
FILE *fIn=fopen(DatFileName.t_str(), "rb");
ShowMessage(DatFileName);
ShowMessage выдает такое сообщение:

C:\boot.in(
Т.е. тоже теряется 1 символ...

В принципе я заменил тип String на AnsiString и все заработало... Просто мне непонятен этот глюк...
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
22.09.2010, 15:11
Цитата Сообщение от davian Посмотреть сообщение
Т.е. тоже теряется 1 символ...
Потерь быть не должно!

У меня было такое один раз на 2009-ом билдере.
Пришлось переставить его и поставить заплатки, которые были доступны на тот момент!
После обновления всё работало нормально.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.09.2010, 15:11
Помогаю со студенческими работами здесь

функция choose(n:byte; c1: string): string возвращает значение из списка
функция choose(n:byte; c1: string): string возвращает значение из списка, выбранное на основании значения аргумена N. если N=1 то...

Как из unordered_map<string, string> получить значение по ключу
У меня есть такая штука. Как мне из нее получить значение по ключу? Я вот хочу написать string str = parents и получить...

Из XML считывать ключ/значение в List<string, string>
Привет, друзья. Помогите разобраться. Ничего полезного в интернете не нашел.. Нужно из XML попарно вывести ключ/значение в List. Фрагмент...

Получить значение value (string) из Dictionary<int, string>
Имеем Dictionary&lt;int, string&gt; pos = new Dictionary&lt;int, string&gt;; pos.Add(1,&quot;A&quot;); pos.Add(2,&quot;B&quot;); Dictionary&lt;int, int&gt; bet =...

На роутере исчезает интернет, после перезагрузки появляется и несколько минут работает, потом снова исчезает
в чем причина и как решить эту проблему? Может ли быть проблема со стороны интернет-провайдера или проблема в роутере?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru