0

概要: 他のユーザーがデータを編集するのを難しくすることなく、実行時にアクセスする必要がある (メモリには格納されない) データを格納するにはどうすればよいでしょうか?

実行時にアクセスする必要があるデータを保存するためのいくつかの異なる方法を検討してきましたが、どの解決策も私の問題に関連していないようです。これを読んだ後、私の質問に答える別の投稿が表示された場合は、リンクしてください。喜んでチェックアウトします。

一部のビデオゲームを変更するプログラムを作成中です。アプリの背後にある主なアイデアは、ゲームの更新に関する柔軟性です。これは、すべてのアドレスが保存されているファイルに、誰でも簡単にアクセスできるようにする必要があることを意味します。現時点では、次のようにデータをテキストファイルに保存します。

0x00000000 Description

私のアプリは、最初の 8 文字 (0x を削除し、値を解析できることを確認するためのチェックがあります) を uint 値として使用して、テキスト ファイルを辞書リストに読み込み、残りの行は次のように格納されます。キー (各キーは一意であり、重複がないことを確認するためのチェックがあります)。これは最初は問題なく機能していましたが、保存されるデータ量がますます多くなり、アプリはそれを処理できなくなりました。スタック オーバーフローが発生するか、データが保存されません。私が疑問に思っているのは、プログラムの実行中に効率的にアクセスできるように、データを保存するにはどうすればよいですか? 私はSQLデータベースを調べましたが、人々がそれらを編集するのに苦労したり(私もSQLデータベースを一度しか使用したことがありません)、パフォーマンスが遅くなったりするのではないかと心配しています. これじゃないなら」その場合、それがどのように行われるかのほんの一例をいただければ幸いです。どんな提案でも大歓迎です、ありがとう!

情報をロードするために使用される現在のコードは次のとおりです (必要ではないと思いますが、私が何をしているかを見たい場合は、ここにアクセスしてください)。

       using (r)
    {
        int counterSuccess = 0;
        int counterFailed = 0;

        while ((origString = r.ReadLine()) != null)
        {
            if (origString.Length >= 8)
            {
                if (origString.StartsWith("0x", StringComparison.CurrentCultureIgnoreCase))
                {
                    origString = origString.Substring(2);
                }
                parseSuccess = uint.TryParse(origString.Substring(0, 8), System.Globalization.NumberStyles.HexNumber, System.Globalization.CultureInfo.CurrentCulture, out addr);
                addrIdentifier = origString.Remove(0, 8);
                addrIdentifier = addrIdentifier.Trim();
                    if (!parseSuccess)
                    {
                        counterFailed++;
                    }
                    else if (parseSuccess)
                    {
                        Addresses.Add(addrIdentifier, addr);
                        counterSuccess++;
                    }
                }
            }
        r.Close();
4

1 に答える 1