Запись в файл локального пути, ofstream
/* LinkAddr - TEdit. Ессно LinkAddr->Text - забирает текст с TEdit’a
"\n" – добавляем ибо необходимо писать с новой строки. */
int LinkSize = Link.Length();
/* Вычисляем размер получившейся строки.
Проверял с выгоном LinkSize – через ShowMessage считает правильно.*/
ofstream tfile("files//link.dat", ios::app);
/* Открытие файла для дозаписи */
tfile.write(Link.c_str(),LinkSize);
/* Собсно сама запись */
tfile.close();
/*Закрытие :) */
Вот. Вроде всё номано.
Если ввести строку типа
«Строка Вася Пупкин»
То всё номано пишется.
При вводе же строки типа:
«C:\WINDOWS\system32\logon.scr»
Запись данных не происходит…
Ессно строка типа «C:\Windows…….» не вбивается в TEdit вручную а появляется там при помощи процедурки, которая висит на Buttone:
{
if ((OD->FileName!=""))
{
LinkAddr->Text = OD->FileName;
}
}
/* OD- OpenDialog ; LinkAddr - TEdit */
У кого будут какие идеи, как решить эту проблему? Я вообще толком не могу понять да же почему у мя не пишется во втором случае ничего… Хотя вроде всё проходит и никаких ероров не выкидвает.
В С++ слэш является идентификатором служебных символов: '\n' - конец строки, '\t' - табулятор, '\"' - двойная кавычка и т.д. Соответственно, чтобы где-то в коде использовать символ слэша, то нужно писать \\. Например
А других способов нет?
Кстати, в режиме отладки пути файлов и прочие строки также отображаются со служебными символами, с использованием слэша.
Ещё менее стал понимать после того, как мне стало необходимо "отвочить" некоторые пееременные и я увидел следующее (см. аттач). Получаеццо, что Сишка хранит в памяти строки и так с двойными слэшами.
Почему тода в файл не пишет???
Вообщем "заяц в шоке" (С)
С++ не хранит строки с двойными слэшами - она их просто так отображает в отладочных сообщениях.
Кароче, время к ночи - объясняю в последний раз:
Edit1->Text = "C:\\Windows\\Explorer.exe"; // Используем спецсимволы (\ обозначаем как \\)
//Получение текста из экранного компонента интерфейса
AnsiString str = Edit2->Text; // Допустим, мы ввели в поле c:\windows\taskmgr.exe
Дальше читай справку по символу \
то в str у меня будет к примеру "C:\\Windows\\Explorer.exe" так и только так?
Пробовал через переменную.
Всё равно в файл не пишет :(
PS Начинаю чувствовать себя дауном.. Вроде и объясняют, и понятно объясняют, но всё равно не понимаю...
не дано... Ибо:
1. Строку нано перековырять и помень всё вручную.
2. После считывания с файла мне нужны реальные пути, а это значит перековырять и поменять всё нгазад ещё раз.
Зачем мне делать лишнии 2 операции. причём не самые маленькие, для такого мелкого проекта, как делаю я...
Тебе часом Резиновая зина нормальную не заменяет? :)
При вызове опендиалога текущей папкой становится папка в которой выбран файл. Загляните туда - будет интересно. А подвела тебя вот эта строчка "files//link.dat" - если директории с подобным именем не существует - файл не создасться и дескриптор потока неверен - но ведь ты этого не проверяешь. А если существует то все нормально - но файл создатсться ОТНОСИТЕЛЬНО текущей папки.