PDA

View Full Version : سوال: rms و نحوه جابجایی اون؟



haghi.mahdi
پنج شنبه 24 مرداد 1387, 19:14 عصر
سلام دوستان
من چند تا سوال راجه به rms داشتم
1-فایلی که netbeans برای اون میسازه چه پسوندی داره ؟
2-می تونم فایل رو بردارم و توی یک پروژه دیگه کپی کنم ؟اگه می تونم از کجای پروژه بردارمش و کجای یک پروژه دیگه بریزم
3-من یک rms ساختم به اسم rms1 در متدaddrecordچند داده توش ذخیره کردم وقتی از برنامه خارج میشم دوباره برنامه رو run میکنم بدون این که به متد addrecord دست بزنم متد readrecord رو صدا میزنم تا از همون rms1 بخونه توجه کنید که من یک rms دیگه نمیسازم
ولی نتیجه اینه که هیچی داده توش نیست .چه طور میشه کاری کرد که داده ها در rms ثابت باقی بمانند و پاک نشوند.
4-چه طور میشه از rms فارسی بخونیم ؟
ممنون از همتون

khlless
شنبه 26 مرداد 1387, 00:52 صبح
سلام
برو به

C:\Documents and Settings\user\j2mewtk\2.5.2\appdb\DefaultColorPhon e
فایلهای با پسوند db
?
این کلاس rms خیلی به درد بخوره:


class Preferences {

private String mRecordStoreName;
private Hashtable mHashtable;
Preferences(String recordStoreName)
throws RecordStoreException {
mRecordStoreName = recordStoreName;
mHashtable = new Hashtable();
load();
}

public String get(String key) {
return (String) mHashtable.get(key);
}

public void put(String key, String value) {
if (value == null) {
value = "";
}
mHashtable.put(key, value);
}

public void delete(String key) {
if (key != null) {
mHashtable.remove(key);
}

}
public void deleteAll() {
mHashtable.clear();
}

public Vector getAll(){
Enumeration keys = mHashtable.keys();
Vector Result=new Vector();
while (keys.hasMoreElements()) {
String key = (String) keys.nextElement();
String value = get(key);
String pref = key + "|" + value;
Result.addElement(pref);
}
return Result;
}
private void load() throws RecordStoreException {
RecordStore rs = null;
RecordEnumeration re = null;

try {
rs = RecordStore.openRecordStore(mRecordStoreName, true);
re = rs.enumerateRecords(null, null, false);
while (re.hasNextElement()) {
byte[] raw = re.nextRecord();
String pref = new String(raw);
// Parse out the name.
int index = pref.indexOf('|');
String name = pref.substring(0, index);
String value = pref.substring(index + 1);
put(name, value);
}
} finally {
if (re != null) {
re.destroy();
}
if (rs != null) {
rs.closeRecordStore();
}
}
}

public void save() throws RecordStoreException {
RecordStore rs = null;
RecordEnumeration re = null;
try {
rs = RecordStore.openRecordStore(mRecordStoreName, true);
re = rs.enumerateRecords(null, null, false);

// First remove all records, a little clumsy.
while (re.hasNextElement()) {
int id = re.nextRecordId();
rs.deleteRecord(id);

}

// Now save the preferences records.
Enumeration keys = mHashtable.keys();
while (keys.hasMoreElements()) {
String key = (String) keys.nextElement();
String value = get(key);
String pref = key + "|" + value;
byte[] raw = pref.getBytes();
rs.addRecord(raw, 0, raw.length);
}
} finally {
if (re != null) {
re.destroy();
}
if (rs != null) {
rs.closeRecordStore();
}
}
}



اگر رشته فارسی را هم به عنوان آرگومان بدهید مشکلی با خواندن و نوشتن فارسی نخواهید داشت.
موفق باشید.

haghi.mahdi
شنبه 26 مرداد 1387, 11:32 صبح
سلام
ممنون استفاده کردم یک سوال دیگه دارم اونم اینه که کلا میشه تو یک کلاس یک rms دارای داده رو باز کنیم از دادههاش استفاده کنیم یعنی اصلا چیزی توش save نکنیم
دوباره هم نسازیمش؟

khlless
شنبه 26 مرداد 1387, 14:14 عصر
سلام.
midlet های یک midlet suite می توانند از record store های یکدیگر استفاده کنند.
می توان record store های یک suite را shareable کرد تا دیگر suite ها در صورتی که نام آنرا بدانند ، از آن استفاده کنند.
در این صفحه (http://developers.sun.com/mobility/midp/articles/databaserms/) به طور کامل توضیح داده شده است.

haghi.mahdi
شنبه 26 مرداد 1387, 21:51 عصر
سلام دوست عزیز کاملا متوجه شدم .من این کار رو کردم و جواب داد.
اما به خاطر emulator داده تو db ذخیره نمیشه یعنی وقتی بازش میکنم خالییه
گفتید باید تو خود موبایل تست کنم .و من میخوام از خود برنامه این کار رو بکنم یعنی وقتی برنامه رو در محیط netbeans
run میکنم به جای emulator برنامه تو دستگاه موبایل بالا بیاداصلا این کار امکانپذیره؟ اگه میشه چه طور؟

khlless
شنبه 26 مرداد 1387, 23:51 عصر
سلام دوست عزیز کاملا متوجه شدم .من این کار رو کردم و جواب داد.
اما به خاطر emulator داده تو db ذخیره نمیشه یعنی وقتی بازش میکنم خالییه
گفتید باید تو خود موبایل تست کنم .و من میخوام از خود برنامه این کار رو بکنم یعنی وقتی برنامه رو در محیط netbeans
run میکنم به جای emulator برنامه تو دستگاه موبایل بالا بیاداصلا این کار امکانپذیره؟ اگه میشه چه طور؟

سلام دوست خوبم.

برای اینکه به جای emulator روی دستگاه run یا debug کنید باید j2me sdk for cldc مربوط به گوشیتان را از سایت شرکت سازنده دانلود و نصب کنید. البته اگر ارائه شده باشد. که se ارائه می دهد.