Приветствую Вас Гость
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

  • Главная страница
  • Форум (Новoe на форуме)
  • Быстрый старт
  • Блог
  • Видео уроки
  • Каталог файлов
  • Статьи и уроки
  • Юзербары
  • FAQ
  • Обратная связь
  • Консоль [7]
    Работа с консолью
    Delphi и 39dll [1]

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    [ Кто нас сегодня посетил ]
    Главная » Статьи » Сервер на Delphi » Консоль

    INI файлы в консоли

      Если вы написали сервер на Делфи, и хотите реализовать регистрацию профилей(акуентов) игроков. То вам нужно использовать:

    MySQL, ини файлы, или бинарные файлы.

    Я обычно использую ИНИ файлы. Сегодня долго шарился по инету, в поисках статьи о использовании ИНИ файлов в консоли. Про коносли ничего не нашел, догодался вписать коды использования ИНИ в формах, и убрать формы. Я написал постенький код, который показывает как использовать ИНИ файлы:

     

    program Textanika;
    {$APPTYPE CONSOLE}
    uses
    SysUtils,IniFiles;

    var
      Ini: Tinifile; //Создаём объект     Tinifile, и пихаем его в переменную   Ini  
      qq:Integer; // это нам пригодиться

    begin

    // Функция extractfilepath(paramstr(0)); выдаёт путь к нашему проекту
    writeln(extractfilepath(paramstr(0)));//вот вам пример

    //Открываем наш ини-файл. Если его нет, то программа его создаст

    //Создаст при условии что, мы в него напишем хоть что-нибудь…
    Ini:=TiniFile.Create(extractfilepath(paramstr(0))+'MyIni.ini');

    //  'MyIni.ini'  как вы поняли, это имя файла

    //Записываем в ини файл переменные

    //  'Position'  это название секции (блока переменных)

    //Если не ясно, то просто взгляните в ини файл с секциями, и всё станет ясно

    //Записываем в секцию   'Position'  переменную Х
    Ini.WriteInteger('Position','X',23);

    //Аналогично с У
    Ini.WriteInteger('Position','Y',65);

    //Теперь можно проверить, записалась ли переменная У в ини файл

    //Просто прочитаем её
    qq:=Ini.ReadInteger('Position', 'Y', 600);
      write(qq);//Выводим
      Ini.Free;//Закрываем ини файл


    readln;

    end.

     

    Это не сложно. А как открыть ини файл с массивом переменных? Да так же, просто номер цикла в переменную записываем…

    Для этого нам пригодяться функции:

    IntToStr(N: Integer): //преобразование из числа в строчку
    StrToInt(S: String)://и наоборот

    writeln(  IntToStr(23));//вот вам пример работы  

    Вот что мой скрипт откртыия акуентов:

    Для него вам нужно создать два ини файла:

    ser_prof.ini   в него поместить:

    [profile]
    logk=2
    akyL[1]=uzumba

     

    uzumba  .ini   в него поместить:

    [profile]
    akyP=123
    akyD=0
    akyLVL=1
    akyXP=0
    akyINV1=0
    akyINV2=0
    akyINV3=0
    akyINV4=0
    akyINV5=0
    akyINV6=0
    akyINV7=0
    akyINV8=0
    akyINV9=0


    Вот программа:

    program AKyINI;

    {$APPTYPE CONSOLE}


    uses
    SysUtils,
    IniFiles;

    label Flag1;
    var
    Ini: Tinifile; //íåîáõîäèìî ñîçäàòü îáúåêò, ÷òîá ïîòîì ñ íèì ðàáîòàòü
    logk,i,i2:Integer;
    akyL:array[0..255] of string[255];
    akyP:array[0..255] of string[255];
    akyD:array[0..255] of Integer;
    akyLVL:array[0..255] of Integer;
    akyXP:array[0..255] of Integer;
    akyINV : array[0..255,0..255] of Integer;

    qq: string;

    begin

    Ini:=TiniFile.Create(extractfilepath(paramstr(0))+'ser_prof.ini');
    logk:=Ini.ReadInteger('profile', 'logk', 0);
    if(logk>0)then begin
    for i:=1 to logk do
    begin
    akyL[i]:=Ini.ReadString('profile','akyL['+IntToStr(i)+']','nologin');
    end;end;
    Ini.Free;


    if(logk>0)then for i:=1 to logk do begin
    Ini:=TiniFile.Create(extractfilepath(paramstr(0))+akyL[i]+'.ini"');

    akyP[i]:=Ini.ReadString('profile','akyP','');
    akyD[i]:=Ini.ReadInteger('profile','akyD',0);
    akyLVL[i]:=Ini.ReadInteger('profile','akyLVL',0);
    akyXP[i]:=Ini.ReadInteger('profile','akyXP',0);


    for i2:=1 to 9 do akyINV[i,i2]:=Ini.ReadInteger('profile','akyINV'+IntToStr(i2),0);
    Ini.Free;
    end;

    Flag1:
    writeln('Akyent kolv:'+IntToStr(logk));
    writeln('Wtite 1 to LOGIN');
    writeln('Wtite 2 to LVL');
    writeln('Wtite 0 to EXIT');
    write('Wtite:');
    readln(qq);

    if(qq='0')then exit;

    if(qq='1')then
    write('Wtite number Akyent:');
    readln(qq);
    if(StrToInt(qq)<=logk)then writeln('Akyent number '+qq+' Login:'+ akyL[StrToInt(qq)]+#10#13);
    goto Flag1;
    {while(true) do begin
    readln(qq);
    if(StrToInt(qq)<=logk)then write(akyL[StrToInt(qq)]);
    end; }

    end.

    Категория: Консоль | Добавил: zxc76 (05.06.2011) | Автор: zxc76
    Просмотров: 1020 | Комментарии: 2 | Теги: консоль., ini, delphi | Рейтинг: 5.0/1
    Всего комментариев: 2
    1  
    Помести код в теги [code] [/code]

    2  
    Ок)
    Самое инетресное что за 6 минут до написания статьи, я собираллся на gcup.ru сощдать тему с вопросом про ИНИ фалйы в консоли))

    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    -->


    Логин:
    Пароль:

    Хостинг от uCoz