encik pot pet 0 Report post Posted April 26, 2005 (edited) kali ni kita taknak restrict kat C/C++ shj.. semua boleh...yg paling penting kreatif dan berseni aktiviti kedua ni kita akan buat satu program yg boleh baca/tulis .ini file (file utk simpan setting). dalam file 'setting.ini' kita ada tiga nilai iaitu value1, value2, value3. file tersebut adalah berjenis teks dan kelihatan seperti contoh dibawahvalue1 = 2 value2 = 3 value3 = 3 arahan soalan (jangan lari tajuk plak) 1. jika file setting.ini tak wujud, korang kena create file tersebut with initial value 0(null) bagi ketiga2 nilai 2. korang kena display nilai dalam file setting tu kat skrin 3. kalau setting.ini tak cukup nilai seperti value1 = 2 value3 = 3 korang kena tambah nilai2 ke dalam file tersebut menjadi value1 = 2 value3 = 3 value2 = 3 4. akhir sekali.. kalau file .ini anda kelihatan value1 = 2 value2 = 3 value3 = 3 atau value2 = 3 value1 = 2 value3 = 3 atau value3 = 3 value2 = 3 value1 = 2 dan seterusnya.. display kat skrin mesti ikut turutan iaitu value1 = 2 value2 = 3 value3 = 3sekian, wassalam.. p/s:kalau malas nak buat pun takpe.. bukan dapat gaji punapa2 hal..design program ni elok2 sebab lepas ni aku nak mintak korang expand program tersebut Edited May 11, 2005 by zeph Quote Share this post Link to post Share on other sites
mchammer 0 Report post Posted May 8, 2005 (edited) AssalamualaikumApsal takde orang post ni? Meh sini aku start dulu.Ok program aku ni tak siap lagi, tapi aku post juga atas permintaan peminat (acah je). Sila beri tunjuk ajar #include <stdio.h> int main(int argc, char **argv) { FILE *pFile; int i; long fSize; char *fBuffer; char value[33] = "value1 = 2\nvalue2 = 3\nvalue3 = 3"; //char *value = "value1 = 2\nvalue2 = 3\nvalue3 = 3"; pFile = fopen("setting.ini", "r"); if (pFile == NULL) { pFile = fopen("setting.ini", "w"); fwrite(value, sizeof(value[0]), sizeof(value)/sizeof(value[33]), pFile); } // Obtain file size fseek(pFile, 0, SEEK_END); fSize = ftell(pFile); rewind(pFile); // Allocate memory to contain the whole file. fBuffer = (char*) malloc(fSize); if (fBuffer == NULL) exit (2); // Copy the file into the buffer. fread (fBuffer, 1, fSize, pFile); printf("%s", fBuffer); // Close & Free fclose (pFile); free (fBuffer); return 0; } Edited May 9, 2005 by mchammer Quote Share this post Link to post Share on other sites
encik pot pet 0 Report post Posted May 10, 2005 wahahaa... dah ada jawapan walaupun tak complete...straightforward - write, read and display raw data (dgn nada bergurau)btw... org lain takde solution ke? Quote Share this post Link to post Share on other sites
f a 0 Report post Posted May 10, 2005 nak join..tapi pakai C# boleh tak? Quote Share this post Link to post Share on other sites
encik pot pet 0 Report post Posted May 10, 2005 silakan sebab c# pun dah ramai org guna..aku pun baru nak berjinak2 http://www.icsharpcode.net/OpenSource/SD/ Quote Share this post Link to post Share on other sites
Ancient One 3 Report post Posted May 10, 2005 apa plak! kalau camtu aku nak guna java la. Quote Share this post Link to post Share on other sites
encik pot pet 0 Report post Posted May 10, 2005 apa plak! kalau camtu aku nak guna java la.←nak guna java pun takpa..tapi Tanya@Putera > Pengaturcaraan > Bahasa Pengaturcaraan > C, C++. C# Quote Share this post Link to post Share on other sites
Ancient One 3 Report post Posted May 10, 2005 apsal C# duk sama ngan C ngan C++? Lain spesis tuh. Bawak mudarat karang. Quote Share this post Link to post Share on other sites
encik pot pet 0 Report post Posted May 10, 2005 (edited) apsal C# duk sama ngan C ngan C++? Lain spesis tuh. Bawak mudarat karang.←nampak gaya kena restructure lagi la forum ni....tambahan:btw utk soalan ni..aku lebih mementing implementation dari language(syntax, structure, etc).. so terpulang nak guna apa2 pun Edited May 10, 2005 by zeph Quote Share this post Link to post Share on other sites
Ancient One 3 Report post Posted May 10, 2005 nampak gaya kena restructure lagi la forum ni.... ya betul... Quote Share this post Link to post Share on other sites
fatah 0 Report post Posted May 10, 2005 kalau tanak restructure pun.. leh lah org paste dlm php nyer kt sini ke..lama dah terfikir dah ni..lalala~ :-" Quote Share this post Link to post Share on other sites
encik pot pet 0 Report post Posted May 11, 2005 di pindahkan ke Tanya@Putera > Pengaturcaraan > Bahasa Pengaturcaraan Quote Share this post Link to post Share on other sites
f a 0 Report post Posted May 11, 2005 ni ha.. C# version.. // MyVWA.Fait Accompli (fa) #region Using directives using System; using System.IO; #endregion namespace AktivitiPutera2 { class Program { // N ni setting untuk brape banyak key yang diperlukan static int N = 3; static void Main(string[] args) { // assign initial value (in case tak wujud data) string[][] data = new string[N][]; for (int i = 0; i < N; i++) { data[i] = new string[2]; data[i][1] = "0"; } // default key // kalo N da diubah, maka ni pun kene ubah // data[0][] ke data[N-1][] data[0][0] = "value1"; data[1][0] = "value2"; data[2][0] = "value3"; // sekiranye fail tak wujud.. if (!File.Exists("setting.ini")) { Console.WriteLine("Fail setting.ini tak wujud.\nFail dengan default "+ "setting akan dibina"); // handle Exception..mane le tau tak le nak create file try { // tulis setting bagi ketiga² value using (StreamWriter sw = new StreamWriter("setting.ini")) for (int i = 0; i < data.Length; i++) sw.WriteLine(data[i][0] + " = " + data[i][1]); } catch (Exception e) { Console.WriteLine(e.Message); } return; // pulang } string baris; // semakKey == true kalo key tu da assign kat dalam fail bool[] semakKey = new bool[N]; for (int i = 0; i < N; i++) semakKey[i] = false; // handle exception try { StreamReader sr = new StreamReader("setting.ini"); while ((baris = sr.ReadLine()) != null) { // elakkan kalo baris.Length < 6 // mane le tau kalo ade blank line try { if (baris.Substring(0, 6) == "value1") { data[0][1] = baris.Substring(9, 1); semakKey[0] = true; } else if (baris.Substring(0, 6) == "value2") { data[1][1] = baris.Substring(9, 1); semakKey[1] = true; } else if (baris.Substring(0, 6) == "value3") { data[2][1] = baris.Substring(9, 1); semakKey[2] = true; } } catch { } } sr.Close(); } // kemungkinan fail tak le read, permission takde or dll la.. catch (Exception e) { Console.WriteLine(e.Message); Environment.Exit(0x01); } // semak adakah setiap key tu da ade..kalo tak, buat key baru... for (int i = 0; i < N; i++) { if (!semakKey[i]) { Random rnd = new Random((int) System.DateTime.Now.Ticks); data[i][1] = Convert.ToString(rnd.Next(1, 3)); Console.WriteLine("Key " + data[i][0] + " tiada dalam pasaran.\n" + "Nilai baru untuk key tersebut adalah " + data[i][1]); } } // display semua key dan value ke skrin! Console.WriteLine("Memparkan key = value ke skrin la!"); for (int i = 0; i < N; i++) Console.WriteLine(data[i][0] + " = " + data[i][1]); } } } // eof ni ha plak outpunye:Thanks to ImageShack for Free Image Hosting Quote Share this post Link to post Share on other sites
encik pot pet 0 Report post Posted May 11, 2005 // semak adakah setiap key tu da ade..kalo tak, buat key baru... for (int i = 0; i < N; i++) { if (!semakKey[i]) { Random rnd = new Random((int) System.DateTime.Now.Ticks); data[i][1] = Convert.ToString(rnd.Next(1, 3)); Console.WriteLine("Key " + data[i][0] + " tiada dalam pasaran.\n" + "Nilai baru untuk key tersebut adalah " + data[i][1]); } } good one! tapi masih incomplete... sebab file setting.ini tidak diubahbtw... this is my expectation from a cs student Quote Share this post Link to post Share on other sites
f a 0 Report post Posted May 11, 2005 ops..sori...tak prasan kene ubah skali fail setting.ini..code ni da ubah untuk ganti code dr line 97-107 sahaje.. // semak adakah setiap key tu da ade..kalo tak, buat key baru... for (int i = 0; i < N; i++) { if (!semakKey[i]) { // lebih selamat kalo letak stream reader hanya sekiranya // missing key berlaku...bukak bile perlu je.. // kalo sume key ade, x payah la bukak fail. try // macam biase le, handle exception { StreamWriter sw = new StreamWriter("setting.ini",true); Random rnd = new Random((int)System.DateTime.Now.Ticks); data[i][1] = Convert.ToString(rnd.Next(1, 3)); Console.WriteLine("Key " + data[i][0] + " tiada dalam " + "pasaran.\nNilai baru untuk key tersebut adalah " + data[i][1]); sw.WriteLine(data[i][0] + " = " + data[i][1]); sw.Flush(); // jgn lupe flush lepas guna sw.Close(); // jgn lupe tutup lepas bukak } catch (Exception e) { Console.WriteLine("Ops. Tak leh nak tulis kat fail. Sebabnye:"); Console.WriteLine(e.Message); } } good one! tapi masih incomplete... sebab file setting.ini tidak diubahbtw... this is my expectation from a cs student←jgn la puji..malu ah ding dong... Quote Share this post Link to post Share on other sites
1kHz 0 Report post Posted May 11, 2005 mcm best pulak.. ni saya punya C#.. sila beri tunjuk ajar..using System; using System.Collections; using System.IO; using System.Text; namespace PuteraKuiz2 { class Class1 { static Hashtable hash; static ArrayList hashKeys; [STAThread] static void Main(string[] args) { string content; //read file try { StreamReader sr = new StreamReader("settings.ini"); content = sr.ReadToEnd(); sr.Close(); } catch (System.IO.FileNotFoundException) { Console.WriteLine("Unable to read file. Using default values."); content = "value1 = 0\nvalue2 = 0\nvalue3 = 0"; } //split to lines string[] lines = content.Trim().Split('\n'); //extract data and put in a hashtable hash = new Hashtable(); for (int i=0; i<lines.Length; i++) { string[] col = lines[i].Split('='); hash.Add(col[0].Trim(), col[1].Trim()); } hashKeys = new ArrayList(hash.Keys); //check missing keys const string DEFAULT_VALUE = "3"; foreach (string defaultKey in new string[] {"value1", "value2", "value3"}) if (!hashKeys.Contains(defaultKey)) { hashKeys.Add(defaultKey); hash.Add(defaultKey, DEFAULT_VALUE); } //sort the keys hashKeys.Sort(); Write(); //change values or whatever hash["value2"] = "1957"; hash["value3"] = "2891"; Write(); try { StreamWriter sw = new StreamWriter("settings.ini"); foreach (string key in hashKeys) sw.WriteLine("{0} = {1}", key, hash[key]); sw.Close(); } catch { Console.WriteLine("Unable to write file."); } Console.ReadLine(); } public static void Write() { Console.WriteLine("\nEchoing content..."); foreach (string key in hashKeys) { Console.WriteLine("{0} = {1}", key, hash[key]); } } } } Quote Share this post Link to post Share on other sites
f a 0 Report post Posted May 11, 2005 @1kHzbest la coding ko..tak terpikir pon nak pakai hashtable..pastu lg kemas dr akunye Quote Share this post Link to post Share on other sites
f a 0 Report post Posted May 18, 2005 zeph, ape cite? apsal senyap je? Quote Share this post Link to post Share on other sites
Ancient One 3 Report post Posted May 22, 2005 isk.. ganas ni.. semer bleh. saper nak check coding nih? Quote Share this post Link to post Share on other sites