2016-09-18 2 views
0

両方のマップが開いているときにB4Aの2つのマップオブジェクトを使用して1つのマップファイルを更新するにはどうすればよいですか?
私のコードは次のとおりです。ここ両方のマップが開いているときにB4Aの2つのマップオブジェクトを使用して1つのマップファイルを更新するにはどうすればよいですか?

Dim s1 as String 
s1 = MapForUser1.Get("113") 

s1は、キーを削除し更新し、同じキー

MapForUser1.Remove("113") 
MapForUser1.Put("113", s1) 

File.WriteMap(File.DirInternal, "scores.dat", MapForUser1) 

に新しい項目を追加します。

dim MapForUser1, MapForUser2 as Map<br> 
MapForUser1 = File.ReadMap(File.DirInternal, "scores.dat") 
MapForUser2 = File.ReadMap(File.DirInternal, "scores.dat") 

あるユーザーが113のいくつかのキー値を更新しますすべての状況で非常に良好に動作します
2番目のユーザーが同じキー113の値を更新する場合:

ここ
Dim s2 as String 
s2 = MapForUser2.Get("113") 

s2が、それはそれがすべて良いが、2番目のユーザの更新が新規として追加されて表示さ
すべての状況で非常に優れた作品キーを削除して、同じキー

MapForUser2.Remove("113") 
MapForUser2.Put("113", s2) 
File.WriteMap(File.DirInternal, "scores.dat", MapForUser2) 

に新しい項目を追加更新既存のアイテムをキー113で更新するのではなく、アイテムです。

両方のユーザーが同じアクティビティを同時に使用します。最初にファイルのマップを開いたときに、2番目のユーザーの更新を適切に管理する方法。 2人目のユーザーは、最初に更新された同じキーのアイテムを削除することはできませんが、アクティビティを閉じませんでした。最初のユーザーがアクティビティーを終了してから2番目のユーザーが同じアイテムを更新すると、それは機能しています。しかし、重複したキーを追加することは、マッピングで考えるのはあまりにも恐ろしいことです。キーが重複しているため、ゲーム全体が何度もクラッシュしています。実際のコード例を参考にしてください。


Rupali

答えて

0

MapForUser1MapForUser2は、それぞれの"113"キーはすでに2枚の異なるデータセットですが、同じキー名を持つことは、あなたのコードを簡素化した場合、あなたは2つのデータファイル、いずれかを使用する必要がありますので、2つの異なるマップですありがとうユーザーごとに独立した更新を許可する必要があります。 File.WriteMap()は、順次テキストファイルに書き込みます。 あなたのコードをもっと見ることなく、ファイルの読み書き操作を処理し、それを2人のユーザーと同期させると、問題が発生する可能性が非常に高いです。

1つのデータファイルを使用することを強くお勧めする場合は、ランダムアクセスファイルを使用することをお勧めします。

RandomAccesFile.WriteObject(Object,Compress as Boolean,Position as Byte)

Dim raf As RandomAccessFile 
raf.initialize(File.DirRootExternal,"score.dat",False) 

raf.WriteObject(MapForUser1,True,0)  'write from byte' 
raf.WriteObject(MapForUser2,True,5000) 'write from byte 5000' 

raf.Close 

次に読むには:

raf.initialize(File.DirRootExternal,"score.dat",False) 


MapForUser1=raf.ReadObject(0)   'read from byte 0' 
MapForUser2=raf.ReadObject(5000)  'read from byte 5000' 

raf.Close 

はこちらをご覧ください: https://b4x.com/android/forum/threads/write-2-map-views-to-a-single-txt-file.48974/

関連する問題