unit Uutils;

interface

uses
Inifiles,Classes,SysUtils,ComCtrls,
  JobCommon,Misc,Dialogs,Math;

const
StrIniJobDataIdent : array[0..8] of string = ('JDHp','JDAp','JDAttack',
                                  'JDMagic','JDHit','JDEvasion','JDCritical',
                                  'JDRhp','JDRap');

function Lvcheck(Lv : integer):boolean;
function CommaTexttoArray(CText : String) : TDoubleDynArray;

procedure WriteIniFormStatus(TargetIni : TMemIniFile; frTop,frLeft:integer;
          opLvI:boolean);
procedure ReadIniFormStatus(TargetIni : TMemIniFile; var frTop,frLeft:integer;
          var opLvI:boolean);


{$IFDEF LoadIniJobData}
procedure WriteIniJobClassData(TargetIni : TMemIniFile; Jobclass : TjobClass);
procedure WriteSectionValues(TargetIni : TMemIniFile;const Section: String; Strings: TStrings);
procedure ReadIniJobClassData(TargetIni : TMemIniFile; Jobclass : TjobClass);
{$ENDIF}

implementation


{$IFDEF LoadIniJobData}
(* Iniへ計算用データを書き込む *)
procedure WriteIniJobClassData(TargetIni : TMemIniFile; jobclass : TjobClass);
begin
//保留
end;

(* Iniへ職業別にデータを書き込む *)
procedure WriteSectionValues(TargetIni : TMemIniFile;const Section: String; Strings: TStrings);
begin
//保留
end;

(* IniのデータをJobClassへ読み込む *)
procedure ReadIniJobClassData(TargetIni : TMemIniFile; Jobclass : TjobClass);
var
   IniTmp : TStringList;
   i : integer;
   arraytmp : TDoubleDynArray;
   valueTmp : string;
begin
  IniTmp := TStringList.Create;
  SetLength(arraytmp,5);
  try
    TargetIni.ReadSectionValues(Jobclass.ClassName,IniTmp);

    //'Name=Value'な文字列を分解&Jobclassにそれをセット
    for i:=Low(StrIniJobDataIdent) to High(StrIniJobDataIdent) do
    begin
      valueTmp := IniTmp.Values[StrIniJobDataIdent[i]];
      if valueTmp <> '' then
      begin
        arraytmp := CommaTexttoArray(valueTmp);
        Jobclass.SetJobDatas(TJobOption(i),
                      arraytmp[0],arraytmp[1],arraytmp[2],arraytmp[3],arraytmp[4]);
      end;
      arraytmp := nil;
    end;

  finally
    IniTmp.Free;
  end;
end;
{$ENDIF}//end LoadIniJobData

(* フォームの状態をIniから復元 *)
procedure ReadIniFormStatus(TargetIni : TMemIniFile; var frTop,frLeft:integer;
          var opLvI:boolean);
begin
  frTop := TargetIni.ReadInteger('Form','Top',-1);
  frLeft := TargetIni.ReadInteger('Form','Left',-1);
  opLvI := TargetIni.ReadBool('Form','opLvI',True);
end;

(* フォームの状態をIniへ保存 *)
procedure WriteIniFormStatus(TargetIni : TMemIniFile; frTop,frLeft:integer;
          opLvI:boolean);
begin
  TargetIni.WriteInteger('Form','Top',frTop);
  TargetIni.WriteInteger('Form','Left',frLeft);
  TargetIni.WriteBool('Form','opLvI',opLvI);
end;

(* コンマ区切の文字列からDouble型の配列をつくる *)
function CommaTexttoArray(CText : String) : TDoubleDynArray;
var
  StrList : TStringlist;
  i : integer;
begin
  StrList := TStringlist.Create;
  try
    StrList.CommaText := CText;
    SetLength(Result,StrList.Count);
    for i:=Low(Result) to High(Result) do
    begin

      try
        if Trim(StrList.Strings[i]) <> '' then
        begin
          //エラーの場合と使わない場合をとりあえず区別しておく(予約)
          if CompareText(Trim(StrList.Strings[i]),'null')=0 then
            Result[i] := -1
          else
            Result[i] := StrToFloat(Trim(StrList.Strings[i]));
        end;
      except
        //なにか例外が出たら-1を入れとく
        //EConvertError の場合が主
        Result[i] := -255;
      end;

    end;
  finally
    StrList.Free;
  end;
end;

(* Lv10以下かどうかチェック *)
function Lvcheck(Lv : integer):boolean;
begin
  Result := True;
  if Lv < 10 then
  begin
    Result := False;
  end;
end;

end.

テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル