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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.08.2009, 09:18   #1
JustKurt
ANT team
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 39
По умолчанию Проблема с чтением из INI файла

Добрый день!
Столкнулся с такой проблемой - сделал подобие базы - при выборе нужного значения в комбо боксе - программа выбирается из Ини файла его данные:

код:
Код:
procedure TForm1.cbb1Change(Sender: TObject);
var
  a:string;
       i                           : integer;
     ProdCode                    : TStringList;
     str, str1, Model, Phone                 : string;
     Prcode, inf                      : string;
     ProdCodeini                 : TIniFile;
begin
_msg(cbb1.Text);
a:=Copy(cbb1.Text,2,6);
a:=StringReplace(a,']','',[rfReplaceAll,rfIgnoreCase]);
a:=StringReplace(a,'=','',[rfReplaceAll,rfIgnoreCase]);
//_msg2(Trim(a));
a:=Trim(a);
Model:=a;

// show phone
IniFile :=TMemIniFile.Create(ExtractFileDir(Application.ExeName)+'\ant.ini');
     
     if IniFile.SectionExists(Model) then
     begin
          Phone:='Nokia ';
          KeyValue:=TStringList.Create;
          IniFile.ReadSectionValues(Model, KeyValue);
          if KeyValue.Count>0 then Phone:=Phone+KeyValue.Strings[0];
          KeyValue.Free;
     end else Phone:='';
     IniFile.Free;

// listing codes

PRcode:=(ExtractFilePath(Application.ExeName)+'Products.ini');
     ProdCodeini:= TIniFile.Create(PRCode);
     if ProdCodeini.SectionExists(Model) then
     begin
       _msg('');
       _msg('Next Product codes used for That phone : ' +Model+'  '+Phone );
       _msg('');
     ProdCodeini:= TIniFile.Create(PRCode);
     ProdCode:=TStringList.Create;
     ProdCodeini.ReadSection(Model, ProdCode);
     SetLength(Model, (ProdCode.Count));
 
     for i := 0 to ProdCode.Count - 1 do
     begin
       Sleep(5);
       str:='';
          Sleep(5);
          str:=ProdCodeini.ReadString(Model, ProdCode.Strings[i], '');
          //_msg2(str);
          {if str='' then begin
            ProdCode.Clear;
          Sleep(50);
          repeat
          str:=ProdCodeini.ReadString(Model, ProdCode.Strings[i], '')
          until str<>'';
          end;}
          str1:= ProdCode.Strings[i]+' <=> '+str;
          Sleep(5);
          _msg(str1);
 end;
      ProdCode.Clear;
     ProdCodeini.Free;

end
else begin
  _msg('Sorry, no any info...');
  ProdCode.Clear;
     ProdCodeini.Free;
end;
end;
При выборе элемента в комбобоксе -получаю результат -
Цитата:
Standalone mode engaged. No need connect phone...
Selected:
[RM-237]=3110 Classic

Next Product codes used for That phone : RM-237 Nokia 3110 Classic

Продукт-коды < <=> > Россия, Украина, Беларусь, Болгария, СНГ
0544322 < <=> > EURO-I NY, BRMD, Cyrillic, Black
0554155 < <=> > EURO-I NY, BRMD, Cyrillic, Blue
.......//тут куча строк еще
0561011 < <=> > EURO-I SVYAZNOY RU BLACK
0544320 < <=> > EURO-I, Bulgaria, Cyrillic, Black
0552679 < <=> > EURO-I, RU, Cyrillic, Purple
Прoдукт-коды < <=> > Прибалтика
0544314 < <=> > EURO-E, Latin, Black
0554146 < <=> > EURO-E, Latin, Blue
0554052 < <=> > EURO-E, Latin, Dusk Pink
0552696 < <=> > EURO-E, Latin, Orange
0552661 < <=> > EURO-E, Latin, Purple
Продукт-кoды < <=> > Израиль
0544316 < <=> > EURO-F, Hebrew, Black
0554147 < <=> > EURO-F, Hebrew, Blue
0554054 < <=> > EURO-F, Hebrew, Dusk Pink
0552697 < <=> > EURO-F, Hebrew, Orange
0552674 < <=> > EURO-F, Hebrew, Purple
Все отрабатывает как надо, НО, иногда получаю вот что -

Цитата:
Standalone mode engaged. No need connect phone...
Selected:
[RM-237]=3110 Classic

Next Product codes used for That phone : RM-237 Nokia 3110 Classic

Продукт-коды < <=>
0544322 < <=>
0554155 < <=>
0554057 < <=>
..........//тут кучпа строк еще
0552679 < <=>
Прoдукт-коды < <=>
0544314 < <=>
0554146 < <=>
0554052 < <=>
0552696 < <=>
0552661 < <=>
Продукт-кoды < <=>
0544316 < <=>
0554147 < <=>
0554054 < <=>
0552697 < <=>
0552674 < <=>
Пример ини-файла -
Цитата:
[RM-237]
Продукт-коды <=> Россия, Украина, Беларусь, Болгария, СНГ
0544322 <=> EURO-I NY, BRMD, Cyrillic, Black
0554155 <=> EURO-I NY, BRMD, Cyrillic, Blue
0554059 <=> EURO-I NY, BRMD, Cyrillic, Dusk Pink
0552703 <=> EURO-I NY, BRMD, Cyrillic, Orange
........//тут куча строк еще...
0554153 <=> EURO-I, RU, Cyrillic, Blue
0554058 <=> EURO-I, RU, Cyrillic, Dusk Pink
0552702 <=> EURO-I, RU, Cyrillic, Orange
0552679 <=> EURO-I, RU, Cyrillic, Purple
Прoдукт-коды <=> Прибалтика
0544314 <=> EURO-E, Latin, Black
0554146 <=> EURO-E, Latin, Blue
0554052 <=> EURO-E, Latin, Dusk Pink
0552696 <=> EURO-E, Latin, Orange
0552661 <=> EURO-E, Latin, Purple
Продукт-кoды <=> Израиль
0544316 <=> EURO-F, Hebrew, Black
0554147 <=> EURO-F, Hebrew, Blue
0554054 <=> EURO-F, Hebrew, Dusk Pink
0552697 <=> EURO-F, Hebrew, Orange
0552674 <=> EURO-F, Hebrew, Purple
В чем трабла может быть? Помогите, плиз)
JustKurt вне форума Ответить с цитированием
Старый 03.08.2009, 11:49   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Прикрепи ка сюда весь проект в архиве чтоб его потестить можно было.
Иначе пошагам пройдись и глянь где не так выполняется.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.08.2009, 14:48   #3
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

ты дважды делаешь это
Код:
 ProdCodeini:= TIniFile.Create(PRCode);
но ошибка как раз здесь
Код:
     ProdCode:=TStringList.Create;
     ProdCodeini.ReadSection(Model, ProdCode);
     SetLength(Model, (ProdCode.Count));
 
     for i := 0 to ProdCode.Count - 1 do
     begin
       Sleep(5);
       str:='';
          Sleep(5);
          str:=ProdCodeini.ReadString(Model, ProdCode.Strings[i], '');
          
          str1:= ProdCode.Strings[i]+' <=> '+str;
          Sleep(5);
          _msg(str1);
 end;
см. выделенные фрагменты кода
после создания стринглиста кол-во элементов всегда будет 0
soleil@mmc вне форума Ответить с цитированием
Старый 04.08.2009, 20:47   #4
JustKurt
ANT team
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 39
По умолчанию

Спасибо!
Только вот ведь в большинстве случаев это ведь работает...

И Я малолсть не понял как и на что менять....

3ий день бьюсь.... =( нифига не получается.
Вот сам модулек....
Вложения
Тип файла: rar project.rar (18.6 Кб, 9 просмотров)

Последний раз редактировалось Stilet; 06.08.2009 в 09:32.
JustKurt вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с чтением типизированного файла. Вадим Буренков Общие вопросы Delphi 8 28.05.2009 13:31
проблема с чтением из файла Tesmont Общие вопросы C/C++ 0 20.05.2009 19:39
C++: проблема с чтением строки ф-ей ReadConsole() Retiz Помощь студентам 2 18.09.2008 21:32
Парсинг INI-файла lyonmik Общие вопросы .NET 2 23.04.2008 19:21