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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2012, 19:19   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
Вопрос Считать пробел значения из INI

В Delphi при работе с INI файлами специально предусмотрено не считывание пробела в конце Value у Key_Name? Как это можно исправить?
[Settings]
Value=pop_
_ - обозначен пробел
Shouldercannon вне форума Ответить с цитированием
Старый 10.01.2012, 19:41   #2
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Ответьте на вопрос: Для чего вам это нужно?
Может придумаем другой вариант.
psycho-coder вне форума Ответить с цитированием
Старый 10.01.2012, 20:08   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

INI использую для хранения языков. Есть места, где нужно фразу гружить с пробелом на конце.
Shouldercannon вне форума Ответить с цитированием
Старый 10.01.2012, 20:11   #4
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

А структуру файла приведите. Если подходит - предложу более удобный вариант
psycho-coder вне форума Ответить с цитированием
Старый 10.01.2012, 20:15   #5
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Код:
procedure TFormServerInfo.SetLanguage(Language: string);
var
  INIFile: TINIFile;
begin
  INIFile := TINIFile.Create(ExtractFilePath(Application.ExeName) + 'plugins\avp2\Language.ini');
  Caption := INIFile.ReadString(Language, 'Caption', '');
  PCInfoAboutServer.Pages[0].Caption := INIFile.ReadString(Language, 'PCInfoAboutServer.Pages[0].Caption', '');
  PCInfoAboutServer.Pages[1].Caption := INIFile.ReadString(Language, 'PCInfoAboutServer.Pages[1].Caption', '');
  PCInfoAboutServer.Pages[2].Caption := INIFile.ReadString(Language, 'PCInfoAboutServer.Pages[2].Caption', '');
  RVServerAddress := INIFile.ReadString(Language, 'RVServerAddress', '');
  RVServerName := INIFile.ReadString(Language, 'RVServerName', '');
  RVMapName := INIFile.ReadString(Language, 'RVMapName', '');
  RVGameType := INIFile.ReadString(Language, 'RVGameType', '');
  RVPlayers := INIFile.ReadString(Language, 'RVPlayers', '');
  RVNotResponding := INIFile.ReadString(Language, 'RVNotResponding', '');
  RVRace := INIFile.ReadString(Language, 'RVRace', '');
  RVNumberOfPlayers := INIFile.ReadString(Language, 'RVNumberOfPlayers', '');
  LVPlayers.Column[1].Caption := INIFile.ReadString(Language, 'LVPlayers.Column[1].Caption', '');
  LVPlayers.Column[2].Caption := INIFile.ReadString(Language, 'LVPlayers.Column[2].Caption', '');
  LVPlayers.Column[3].Caption := INIFile.ReadString(Language, 'LVPlayers.Column[3].Caption', '');
  LVPlayers.Column[4].Caption := INIFile.ReadString(Language, 'LVPlayers.Column[4].Caption', '');
  LVInfoRules.Columns[0].Caption := INIFile.ReadString(Language, 'LVInfoRules.Columns[0].Caption', '');
  LVInfoRules.Columns[1].Caption := INIFile.ReadString(Language, 'LVInfoRules.Columns[1].Caption', '');
  PBBRefresh.Caption := INIFile.ReadString(Language, 'PBBRefresh.Caption', '');
  INIFile.Free;
end;
Language.ini
[Русский]
Caption=Информация о сервере
PCInfoAboutServer.Pages[0].Caption=Основное
PCInfoAboutServer.Pages[1].Caption=Скриншот
PCInfoAboutServer.Pages[2].Caption=Дополнительно
RVServerAddress=Адрес сервера:
RVServerName=Имя сервера:
RVMapName=Имя карты:
RVGameType=Тип игры:
RVPlayers=Игроки:
RVNotResponding=< Сервер не отвечает >
RVRace=Раса
RVNumberOfPlayers=Количество игроков
LVPlayers.Column[1].Caption=Игрок
LVPlayers.Column[2].Caption=Раса
LVPlayers.Column[3].Caption=Пинг
LVPlayers.Column[4].Caption=Счёт
LVInfoRules.Columns[0].Caption=Параметр
LVInfoRules.Columns[1].Caption=Значение
PBBRefresh.Caption=Обновить
Shouldercannon вне форума Ответить с цитированием
Старый 10.01.2012, 20:27   #6
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

ага. Отлично. Я предложу вариант, а вы тогда решите что лучше.
1. Костыль.
Заменить пробелы на _ при сохранении и обратно на пробел при чтении
2.
Использовать TSrtringList

Загрузка
Код:
var
  langFile: TStringList;
begin
  langFile := TStringList.Create();
  langFile.LoadFromFile('language.lng');
  PCInfoAboutServer.Pages[0].Caption := langFile.values['AboutServer0'];
  PCInfoAboutServer.Pages[1].Caption := langFile.values['AboutServer1'];
  PCInfoAboutServer.Pages[2].Caption := langFile.values['AboutServer2'];
  RVServerAddress := langFile.values['RVServerAddress'];
  RVServerName := langFile.values['RVServerName'];
  RVMapName := langFile.values['RVMapName'];
  RVGameType := langFile.values['RVGameType'];
  RVPlayers := langFile.values[''RVPlayers'];
  RVNotResponding := langFile.values['RVNotResponding'];
  RVRace := langFile.values['RVRace'];
  RVNumberOfPlayers := langFile.values['RVNumberOfPlayers'];
  LVPlayers.Column[1].Caption := langFile.values['LVPlayers1'];
  LVPlayers.Column[2].Caption := langFile.values['LVPlayers2'];
  LVPlayers.Column[3].Caption := langFile.values['LVPlayers3'];
  LVPlayers.Column[4].Caption := langFile.values['LVPlayers4'];
  LVInfoRules.Columns[0].Caption := langFile.values['LVInfoRules0'];
  LVInfoRules.Columns[1].Caption := langFile.values['LVInfoRules1'];
  PBBRefresh.Caption := langFile.values['PBBRefresh'];
  langFile.Free();
end;
Сохранение
Код:
var
  langFile: TStringList;
begin
  langFile := TStringList.Create();
  langFile.LoadFromFile('language.lng'); // Опционально
  langFile.values['AboutServer0'] := PCInfoAboutServer.Pages[0].Caption;
  langFile.values['AboutServer1'] := PCInfoAboutServer.Pages[1].Caption;
  langFile.values['AboutServer2'] := PCInfoAboutServer.Pages[2].Caption;
  langFile.values['RVServerAddress'] := RVServerAddress;
  langFile.values['RVServerName'] := RVServerName ;
  langFile.values['RVMapName'] := RVMapName ;
  langFile.values['RVGameType'] := RVGameType ;
  langFile.values[''RVPlayers'] := RVPlayers ;
  langFile.values['RVNotResponding'] := RVNotResponding ;
  langFile.values['RVRace'] := RVRace ;
  langFile.values['RVNumberOfPlayers'] := RVNumberOfPlayers;
  langFile.values['LVPlayers1'] := LVPlayers.Column[1].Caption ;
  langFile.values['LVPlayers2'] := LVPlayers.Column[2].Caption ; 
  langFile.values['LVPlayers3'] := LVPlayers.Column[3].Caption ;
  langFile.values['LVPlayers4'] := LVPlayers.Column[4].Caption ;
  langFile.values['LVInfoRules0'] := LVInfoRules.Columns[0].Caption ; 
  langFile.values['LVInfoRules1'] := LVInfoRules.Columns[1].Caption ;
  langFile.values['PBBRefresh'] := PBBRefresh.Caption ;
  langFile.SaveToFile('language.lng');
  langFile.Free();
end;
Причем если некий параметр, например langFile.values['PBBRefresh'] уже есть, он не задвоится а будет перезаписан)

Но решение принимать вам.

upd
Забыл сказать, параметр сохраняется и загружается с пробелами, сколько бы их не было в строке

3. Добавлять пробел где нужно вручную

Последний раз редактировалось psycho-coder; 10.01.2012 в 20:30.
psycho-coder вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как считать цифры через пробел в c#? Курт Помощь студентам 2 24.10.2011 20:50
Считать из секции INI файла Shouldercannon Общие вопросы Delphi 5 07.06.2011 21:54
С++ Builder - Считать значения из файла _Денис Помощь студентам 1 13.11.2009 14:19
считать значения в файле.txt ciaonataha Общие вопросы C/C++ 4 30.03.2009 20:06
Считать одинаковые значения Волк Microsoft Office Excel 10 26.03.2009 11:18