Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2013, 15:22   #1
ArtemSakh
Пользователь
 
Регистрация: 18.01.2013
Сообщений: 18
По умолчанию Страное поведение программы

Ну собстно, все прекрасно работает, только один момент мне не понятен.
В программе есть поле для ввода имени юзера. Если Вы устанавливаете эту програмку на компьютер впервые - она как от нее и требуется - сохраняет Ваше имя. Какая-то непонятная мишура в следующем, если удалить эту прогу, все файлы от нее(проверял нигде ничего не остается) и поставить ее заново, она все равно каким то непонятным мне образом загружает Ваше имя.
Т.е. чтоб более понятно, если поставить ее на комп впервый раз - поле "Имя" - пустое. Вы введете туда свои данные и все прекрасно.
Если Вы удалите ее(как уже сказал абсолютно все файлы удаляются) и поставите заного, она все равно загрузит то слово, которое вы вводили в поле "Имя"..
вот как сохраняю поле "Имя":
Код:
var
f:TextFile;

begin
AssignFile(f,'C:\WINDOWS\files\name.txt');//Сохранение имени
ReWrite(f);
write(f,Edit2.Text);
closefile(f);
Вот как загружаю:
Код:
LoadFromFile('C:\WINDOWS\files\name.txt');
Больше в коде нигде не упоминается и не употребляется файл name.txt. Каким образом она понимает, что уже была на этом компе, и выводит когда то введеное юзером имя?Либо я идиот, либо эт какая то мистика

Последний раз редактировалось ArtemSakh; 02.07.2013 в 15:28.
ArtemSakh вне форума Ответить с цитированием
Старый 02.07.2013, 15:50   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Похоже на мистику
Файл C:\WINDOWS\files\name.txt точно удален?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 02.07.2013, 15:53   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
либо эт какая то мистика
во-первых, в первом варианте вашего сообщения (до того, как Вы его исправили в 15:28) у Вас были указаны РАЗНЫЕ имена файлов. Думаю, что Вы в программе имя, которое записывали и имя, которое читали меняли. В результате, один из файлов так и остался.

во-вторых, чтобы не наступать на подобные грабли, нужно использовать КОНСТАНТУ.
примерно вот так:
Код:
const FileNameForSave = 'C:\WINDOWS\files\name.txt';

AssignFile(f, FileNameForSave);//Сохранение имени
...

// чтение 
LoadFromFile(FileNameForSave);

НО! Главное! Кто Вас учил писать свой файлы в каталог Windows?!?!
Да ещё и неправильно!
а) пользователю с обычными правами доступ на запись в данную папку запрещён!
б) такой папки на диске C:\ вообще может не быть, а windows стоять совершенно в другом месте
в) у вас в Windows есть папка "files"? а у меня, например, нет!

короче. Не изобретайте велосипед, сохраняйте пользовательские данные там, где их положено сохранять (либо в %appdata%, либо в реестре)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.07.2013, 16:24   #4
ArtemSakh
Пользователь
 
Регистрация: 18.01.2013
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
НО! Главное! Кто Вас учил писать свой файлы в каталог Windows?!?!
Да ещё и неправильно!
а) пользователю с обычными правами доступ на запись в данную папку запрещён!
б) такой папки на диске C:\ вообще может не быть, а windows стоять совершенно в другом месте
в) у вас в Windows есть папка "files"? а у меня, например, нет!

короче. Не изобретайте велосипед, сохраняйте пользовательские данные там, где их положено сохранять (либо в %appdata%, либо в реестре)
А) Это машины в нашем офисе, там уж поверьте прав у меня достаточно для того чтобы влезть в эту папку)
Б) Это вытекает из пункта "А". Винду ставил везде я, везде системный диск "С"
В) ее и нет, но после распаковки папка "files" появляется как и прописано)
По поводу того, что исправил)Да было дело просто переписал на форум не ту адресную строку) в коде все правильно папка "files"

по поводу удаления "name.txt" - проверял неоднократно)везде все удаляется)
ArtemSakh вне форума Ответить с цитированием
Старый 02.07.2013, 16:26   #5
ArtemSakh
Пользователь
 
Регистрация: 18.01.2013
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
.

во-вторых, чтобы не наступать на подобные грабли, нужно использовать КОНСТАНТУ.
примерно вот так:
[CODE]const FileNameForSave = 'C:\WINDOWS\files\name.txt';

AssignFile(f, FileNameForSave);//Сохранение имени
...
А вот за это спасибо. Надо будет попробовать
Нет, ну это как бы некритично, то что она как то сохраняет "имя" - ну сохраняет и пусть) Просто интересно как и почему
ArtemSakh вне форума Ответить с цитированием
Старый 02.07.2013, 16:28   #6
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

а чем удаляется прога\файлы?
Цитата:
НО! Главное! Кто Вас учил писать свой файлы в каталог Windows?!?!
Да ещё и неправильно!
а) пользователю с обычными правами доступ на запись в данную папку запрещён!
б) такой папки на диске C:\ вообще может не быть, а windows стоять совершенно в другом месте
+1 ... это не есть гуд
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 02.07.2013, 16:40   #7
ArtemSakh
Пользователь
 
Регистрация: 18.01.2013
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Yurk@ Посмотреть сообщение
а чем удаляется прога\файлы?

+1 ... это не есть гуд
Ок - переделаю конечную директорию - эт в принципе не сложно, и думаю правильно довериться Вашему опыту, который явно больше моего, спасибо что указали на ошибку)
Удаляю сам в ручную. Ну т.е. т.к. пока это лишь просто проба, пакую папки "2 папки" в SFX собстно папка "files", "program". Ну не просто удалил а зашел в C:\Windows\ и обе папки Shift+Del.
Кроме как в эти 2 папки програмка не лезит, ничего кроме собстно .txt не создает.
Проверял на нескольких машинах) в первый раз нормально, а после удаления и последующей установки, все равно выдирает откуда то имя)
ArtemSakh вне форума Ответить с цитированием
Старый 02.07.2013, 16:42   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Проверял на нескольких машинах) в первый раз нормально, а после удаления и последующей установки, все равно выдирает откуда то имя)
таких чудес не бывает. что-то Вы делаете не так!
киньте программу + исходник (можно в личку)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.07.2013, 16:46   #9
ArtemSakh
Пользователь
 
Регистрация: 18.01.2013
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
таких чудес не бывает. что-то Вы делаете не так!
киньте программу + исходник (можно в личку)
Без проблем в личку скину. Но извините, только завтра, у мя делфи на работе стоит а дома нету(
ArtemSakh вне форума Ответить с цитированием
Старый 02.07.2013, 17:02   #10
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

Цитата:
пакую папки "2 папки" в SFX собстно папка "files", "program"
а не пакуется ли в этот архив и сам файл name.txt ?
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Непонятное поведение программы Freimaks Общие вопросы Delphi 1 15.12.2012 00:00
Непонятное поведение программы Bonifacyi Паскаль, Turbo Pascal, PascalABC.NET 2 18.12.2011 14:10
Непонятное поведение программы на Delphi Kashp Помощь студентам 10 14.12.2007 21:12