1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

Подсчет народа из ini-файла

Тема в разделе 'Delphi', создана пользователем JoLan, 27 июл 2010.

  1. TopicStarter Overlay

    JoLan Команда форума Администратор AngeliCore Программист

    Сообщения:
    1.061
    Лайки:
    945
    Пол:
    Мужской
    Репутация:
    6
    Команда:
    AngeliCore
    Страна:
    Russian Federation Russian Federation
    есть ini-файл такого содержания:
    Код:
    [Bowmaster]
    Sum1=200000
    Name1=Neron
    [Warrior]
    Sum1=200000
    Name1=Belum
    [Mage]
    Sum1=200000
    Name1=kirdan
    [Priest]
    Sum1=200000
    Name1=Вжик
    [Werewolf]
    Sum1=200000
    Name1=Зак
    Sum2=200000
    Name2=Тестчо
    [Druid]
    Sum1=200000
    Name1=Suffocate
    Задача: посчитать в каждой секции кол-во народа и дописать соответствующее число к классу. Мой вариант кода:
    Код:
    procedure TForm1.sRadioGroup1Click(Sender: TObject);
    const a:array[0..5]of string=('Воин','Маг','Лучник','Жрец','Оборотень','Друид');
    b:array[1..6]of string=('Warrior','Mage','Bowmaster','Priest','Werewolf','Druid');
    var k1,i1,i2:integer;
    s:string;
    begin
    StringGrid1.RowCount:=2;
    StringGrid1.Cells[0,1]:='';
    StringGrid1.Cells[1,1]:='';
    JIni:=TiniFile.Create(extractfilepath(Application.ExeName)+'judges.ini');
    case sRadioGroup1.ItemIndex of
    0:s:='Warrior';
    1:s:='Mage';
    2:s:='Bowmaster';
    3:s:='Priest';
    4:s:='Werewolf';
    5:s:='Druid';
    end;
    begin
    for k1:=1 to JIni.InstanceSize do begin
    StringGrid1.Cells[0,k1]:=JIni.ReadString(s,'Sum'+inttostr(k1),'');
    StringGrid1.Cells[1,k1]:=JIni.ReadString(s,'Name'+inttostr(k1),'');
    if (StringGrid1.Cells[0,k1]<>'') and
    (StringGrid1.Cells[1,k1]<>'') then StringGrid1.RowCount:=StringGrid1.RowCount+1
    else if StringGrid1.RowCount>2 then begin
    StringGrid1.RowCount:=StringGrid1.RowCount-1;
    break;
    JIni.Free;
    end
    else begin break; JIni.Free;
    end;
    end;
    end;
    JIni:=TiniFile.Create(extractfilepath(Application.ExeName)+'judges.ini');
    for i1:=0 to 5 do begin
    for i2:=1 to JIni.InstanceSize do begin
    s:=JIni.ReadString(b[i2],'Name'+inttostr(i2),'');
    if s<>'' then sRadioGroup1.Items.Strings[i1]:=a[i1]+' ('+inttostr(i2)+')'
    else break;
    end;
    end;
    JIni.Free;
    end;
    
    [​IMG]
    К каждой професии добавляет число, равное кол-ву записей в секции Warrior. Не пойму в чем проблема :lol:
    1 человеку нравится это.
  2. gouranga Эксперт Программист Пользователи Open Source Contributor White List

    Сообщения:
    67
    Лайки:
    142
    Пол:
    Мужской
    Репутация:
    0
    Страна:
    Netherlands Netherlands
    ненавижу любой паскаль-бейзд язык. попробуем разобраться.

    Код:
    JIni:=TiniFile.Create(extractfilepath(Application.ExeName)+'judges.ini');
    каждый раз читаешь? O.o

    Код:
     case sRadioGroup1.ItemIndex of
    0:s:='Warrior';
    1:s:='Mage';
    2:s:='Bowmaster';
    3:s:='Priest';
    4:s:='Werewolf';
    5:s:='Druid';
    end;
    
    зачем? у тебя const b:array вроде бы есть?

    блин. нет, дальше не осилю я этот код. он просто не поддается анализу.
    поддерживай «уровневость» кода, иначе нереально разобраться в лексемах языка.

    p.s. ты бедолага. вот придется тебе xml читать/писать — заморишься со своим дельфи.
  3. TopicStarter Overlay

    JoLan Команда форума Администратор AngeliCore Программист

    Сообщения:
    1.061
    Лайки:
    945
    Пол:
    Мужской
    Репутация:
    6
    Команда:
    AngeliCore
    Страна:
    Russian Federation Russian Federation
    2gouranga, жду уроков С++ :lol:
    И кста, на тему каждый раз открывать-закрывать, писал тяп-ляп и не особо задумывался над оптимизацией
    1 человеку нравится это.
  4. gouranga Эксперт Программист Пользователи Open Source Contributor White List

    Сообщения:
    67
    Лайки:
    142
    Пол:
    Мужской
    Репутация:
    0
    Страна:
    Netherlands Netherlands
    ок, в каком-нибудь уроке через месяц напишем твой стат-калькулятор на с++ или c# )
  5. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    Сообщения:
    751
    Лайки:
    1.299
    Пол:
    Мужской
    Репутация:
    6
    gouranga работать с xml на delphi совсем не сложно.
  6. TopicStarter Overlay

    JoLan Команда форума Администратор AngeliCore Программист

    Сообщения:
    1.061
    Лайки:
    945
    Пол:
    Мужской
    Репутация:
    6
    Команда:
    AngeliCore
    Страна:
    Russian Federation Russian Federation
    Проблема была решена через Ж:

    Код:
    ...
    JIni:=TiniFile.Create(extractfilepath(Application.ExeName)+'judges.ini');
    for i1:=0 to 5 do begin
    JIni.ReadSection(b[i1],Listbox1.Items);
    sRadioGroup1.Items.Strings[i1]:=a[i1]+' ('+inttostr(round(Listbox1.Items.Count/2))+')';
    end;
    JIni.Free;
    ...
    
  7. TheMazzahaka Пользователи

    Сообщения:
    223
    Лайки:
    76
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    J-Games Dev
    присоеденюсь к посту ибо ansipos,insert,delete,copy,length и циклы в делфи не отменяли х)
  8. Fedcomp Пользователи

    Сообщения:
    49
    Лайки:
    4
    Репутация:
    0
    Но про скорость парсинга можно забыть.

    Иди гуляй, для дельфи давно готовые элементы есть, как стандартный так и сторонние.


    Хотите _уроки_ по C++? это вам не раз два и я все знаю ... скачайте книгу "Бьерн Страуструп. Язык программирования С++" или/и "самоучитель C++ для чайников". А потом скачайте самоучитель по Qt
  9. TopicStarter Overlay

    JoLan Команда форума Администратор AngeliCore Программист

    Сообщения:
    1.061
    Лайки:
    945
    Пол:
    Мужской
    Репутация:
    6
    Команда:
    AngeliCore
    Страна:
    Russian Federation Russian Federation
    Такое чувство, что С++ у тебя вёл Яшин...
    1 человеку нравится это.
  10. TheMazzahaka Пользователи

    Сообщения:
    223
    Лайки:
    76
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    J-Games Dev
    Зачем усложнять и так простое ?Оо
  11. Fedcomp Пользователи

    Сообщения:
    49
    Лайки:
    4
    Репутация:
    0
    Дык это тебя надо спросить, зачем юзать хрен знает что, тратить кучу времени на велосипед (и сделать тормозную дрянь в итоге), когда можно быстро через компоненты сделать?

    Такое чуство что ты не читал среднюю литературу по C++. Да в книге много мусора, но раскрытие большинства основных вещей нормальное, не в сравнении с некоторыми другими авторами. Хотя для начала можно взять и литературку попроще.
  12. TopicStarter Overlay

    JoLan Команда форума Администратор AngeliCore Программист

    Сообщения:
    1.061
    Лайки:
    945
    Пол:
    Мужской
    Репутация:
    6
    Команда:
    AngeliCore
    Страна:
    Russian Federation Russian Federation
    Если пришли флудить - есть ЛС.
    1 человеку нравится это.
Черновик сохранён Черновик удалён

Поделиться этой страницей