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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2013, 23:25   #11
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,926
По умолчанию

Значит в файле менее двух строк.
northener вне форума Ответить с цитированием
Старый 22.09.2013, 23:26   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Lana21 Посмотреть сообщение
Текстовый файл у меня лежит в одном каталоге с проектом Delphi, там же, куда сохраняется и .exe при компилировании. Я так уже делала и все работало, так что дело не в этом.
Вы зря спорите.
Добавьте в ваш код получение пути самого .exe файла, вот тогда и доказывайте, что дело в не в этом:
Код:
IncludeTrailingBackslash( ExtractFilePath(Application.ExeName))

var
   F : TStringsList;
begin
   IndStr := IndStr + 1;{IndStr и IndKey это глобальные 
                     переменные,   объявленные в разделе public}
   F := TStringList.Create();
   F.LoadFromFile(ExtractFilePath(Application.ExeName)+'Prey.txt');
   if IndStr < F.Count then
       F.Strings[IndStr] := IndKey
   else
       ShowMessage('В файле недостаточно строк для замены!');
   F.Add(IndKey);
   F.SaveToFile(ExtractFilePath(Application.ExeName)+'Prey.txt');
   F.Free;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.09.2013, 15:12   #13
Lana21
Пользователь
 
Аватар для Lana21
 
Регистрация: 10.09.2013
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Вы зря спорите.
Добавьте в ваш код получение пути самого .exe файла, вот тогда и доказывайте, что дело в не в этом:
Код:
IncludeTrailingBackslash( ExtractFilePath(Application.ExeName))

var
   F : TStringsList;
begin
   IndStr := IndStr + 1;{IndStr и IndKey это глобальные 
                     переменные,   объявленные в разделе public}
   F := TStringList.Create();
   F.LoadFromFile(ExtractFilePath(Application.ExeName)+'Prey.txt');
   if IndStr < F.Count then
       F.Strings[IndStr] := IndKey
   else
       ShowMessage('В файле недостаточно строк для замены!');
   F.Add(IndKey);
   F.SaveToFile(ExtractFilePath(Application.ExeName)+'Prey.txt');
   F.Free;
end;
Так зачем мне код получения пути .exe файла, я и так знаю где он? Я уже работала с текстовыми файлами и до этого все получалось.
Lana21 вне форума Ответить с цитированием
Старый 23.09.2013, 15:24   #14
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,428
По умолчанию

'Prey.txt' - относительный путь
ExtractFilePath(Application.ExeName )+'Prey.txt' - абсолютный путь

Лучше задайте абсолютный путь, чтобы точно "попадать" по нужному файлу.
Мы стараемся отсечь все возможные проблемы, но Вы почему-то упираетесь

Вы привыкли копать лопаткой. Очередное задание состоит в рытье котлована под небоскреб. Вам советуют взять экскаватор, но Вы упорно продолжаете пользоваться лопаткой - "до этого все получалось". Пример сильно утрирован.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 23.09.2013 в 15:28.
BDA вне форума Ответить с цитированием
Старый 23.09.2013, 15:46   #15
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Lana21
Так зачем мне код получения пути .exe файла, я и так знаю где он?
Вы, вероятно, не обратили внимание, там ещё добавлена проверка на количество прочитанных строк:
Код:
if IndStr < F.Count then
       F.Strings[IndStr] := IndKey
   else
       ShowMessage('В файле недостаточно строк для замены!');
Цитата:
Сообщение от Lana21
Я уже работала с текстовыми файлами и до этого все получалось.
ну, отлично. значит, и в этот раз всё получится!

Желаю успехов!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.09.2013, 18:44   #16
Lana21
Пользователь
 
Аватар для Lana21
 
Регистрация: 10.09.2013
Сообщений: 11
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
'Prey.txt' - относительный путь
ExtractFilePath(Application.ExeName )+'Prey.txt' - абсолютный путь

Лучше задайте абсолютный путь, чтобы точно "попадать" по нужному файлу.
Мы стараемся отсечь все возможные проблемы, но Вы почему-то упираетесь
Еще раз: я раз сто подключалась к текстовым файлам по относительному пути и все прекрасно получалось. И да, в любом случае, ваш вариант все равно не работает.
Lana21 вне форума Ответить с цитированием
Старый 23.09.2013, 19:18   #17
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,428
По умолчанию

Цитата:
Сообщение от Lana21 Посмотреть сообщение
И да, в любом случае, ваш вариант все равно не работает.
Ну тогда начинайте осваивать отладчик дельфи. Понаставьте брейков и смотрите, исполняется ли данный участок кода, и чем заполнены переменные.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 23.09.2013, 19:37   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
И да, в любом случае, ваш вариант все равно не работает.
пройдесь в пошаговой отладке, посмотрите, что происходит.
Может быть, до данных строчек вообще выполнение не доходит!

p.s. выложите исходники проекта(можно тестового), будет повод для конкретного разговора!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.09.2013, 20:33   #19
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Еще раз: я раз сто подключалась к текстовым файлам по относительному пути и все прекрасно получалось.
А вы ярлык для проги бросьте на рабочий стол и укажите рабочий каталог отличный от каталога программы, или с батником поиграйтесь, или с ShellExecute. Рухнут все ваши относительные пути
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.09.2013, 17:28   #20
Lana21
Пользователь
 
Аватар для Lana21
 
Регистрация: 10.09.2013
Сообщений: 11
По умолчанию

Короче я все проверила. Все дело вот в этом:

Код:
F.Strings[IndStr] := IndKey;
Программа почему-то упрямо не хочет писать данные в строку обозначенную переменной. Кокретным числом - пожалуйста, сколько угодно. Переменной - низзя!
Lana21 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что не так делаю? ratqa Общие вопросы C/C++ 2 13.12.2012 16:54
Что не так я делаю? volha_alina Паскаль, Turbo Pascal, PascalABC.NET 2 23.05.2012 13:05
Что я делаю не так rj-45 Microsoft Office Excel 7 22.11.2011 10:21
Что не так делаю? L6go1as Общие вопросы C/C++ 5 28.10.2011 07:54
Объсните что не так делаю Crudelis Общие вопросы C/C++ 4 10.06.2010 00:26