日別アーカイブ: 2013年6月21日

23日目 実機テストでテキストファイルを読めるようになったが・・・

実機テストでテキストファイルを読めるようになったが・・・
データ数は40000ぐらい。
Win32 では1秒
iOS simulator では20秒
実機テストでは20分はかかる。
大きいデータではこの方法は無理。
InterBase を使う方向で考える。

procedure TWordList.Load(aPathFileName: string);
var
  i: Integer;
  tmpWordRecord: TWordRecord;
  tmpRecordList: TStringList;
  tmpFieldList: TStringList;
  tmpString: String;
begin

//  DeleteFile(aPathFileName);

  self.Clear;

  if FileExists(aPathFileName) then
  begin
    tmpFieldList  := TStringList.Create;
    tmpRecordList := TStringList.Create;

    tmpRecordList.LoadFromFile(aPathFileName);

    for i := 0 to tmpRecordList.Count - 1 do
    begin

      tmpFieldList.Delimiter := chr(DEMILITR_CHR);
      tmpFieldList.StrictDelimiter := False;

      tmpString := tmpRecordList[i];
      tmpFieldList.DelimitedText := tmpString;

      tmpWordRecord.Word := trim(tmpFieldList[0]);
      tmpWordRecord.Japanese := trim(tmpFieldList[1]);
      tmpWordRecord.Japanese := StringReplace(tmpWordRecord.Japanese, chr(ESCAPE_COMMA_CHR), ',', [rfReplaceAll]);
      tmpWordRecord.Japanese := StringReplace(tmpWordRecord.Japanese, chr(ESCAPE_SPACE_CHR), ' ', [rfReplaceAll]);

      self.AddItem(tmpWordRecord);

    end;
    tmpRecordList.Free;
    tmpFieldList.Free;
  end;

end;

23日目 配置マネージャー

配置マネージャーで、画像や音声を初回起動時に配置しているが、同名ファイルがあった場合は新たに配置ない仕様になっているみたい。

まず、古いファイルを手動で削除する必要がある。

それにしても、配置マネージャーは使い勝手が悪い。コピー、ペーストもできないし、すべてタイプしなくてはいけないなんて。

みんなどうしてるのかな?

23日目 TList の型キャストはジェネリクスを使って解決

uses に  System.Generics.Collections を追加

private
FUndoList: TList<TUndoRecord>;

FUndoList := TList<TUndoRecord>.Create;
アクセスは直接
GameModel.TileManager.TileList.Assign(FUndoList[tmpUndoStep].UndoTileList);
といった形で。

これは型キャストの必要がないので、コードがすっきり。
iOS Simulator でも動作することを確認。

23日目 TList のキャストが iOS ではうまくいかないことがある?

あまり行儀のよくない型キャストが win32 と iOS系では動作が違うような気がする。

GameModel.TileManager.TileList.Assign(TUndoRecord(FUndoList[tmpUndoStep]).UndoTileList);

このあたりをジェネリクスを使って、書き換えることにする。