Энэ сэдвээр нэлээн дээрээс бичмээр байсан ч зав болохгүй байсаар өдийг хүрлээ.
С хэл дээр ямар нэгэн мэдэхгүй зүйл гарахад Googlees хайгаад асуултынхаа хариуг англи болон бусад хэл дээр амархан олчихно. Гэхдээ тэр бүр хайж олдоод байхгүй сэдэв бол яг одоо бичиж буй, монгол хэл монгол бичигтэй холбоотой сэдэв юм. Англи, солонгос зэрэг хөгжингүй орнуудын хэлтэй харьцуулахад манай монгол хэлний компьютерийн шинжилгээний ажил өргөн хөгжөөгүй байгаа болохоор энэ тал дээр програмчид маань их бэрхшээлтэй хувь хувьдаа тулгарч байдаг байх. Яг одоо миний бичиж буй сэдвийн бэрхшээл тулгарсан хүн байвал наашаа анхаарлаа хандуулна уу. Би өөрөө энэ бэрхшээлээ давах гэж хэчнээн өдөр зарцуулсан болохоор дараа дараачийн хүмүүстээ энэ туршлагаасаа хуваалцахыг хүсч байна. Уншигч та энэ бичлэгийг ашиглан асуудлаа шийдвэрлэж чадвал миний энэ блогийг бичиж буй зорилго хэрэгжиж байна гэсэн үг юм.
С хэлэнд /string/ үгтэй ажиллахад ер нь анх суралцагсдад хэцүү байдаг.
string хадгалах зориулалттай char type өргөн хэрэглэдэг байх. Гэтэл энэ type-г ашиглан бичсэн дараах кодуудыг харцгаая.
char * ch = "аав";
Ингэж бичихэд аав гэдэг үг зөв уншигдана. Гэтэл
char * ch = "өвөө";
гэвэл ?????? буюу асуултын тэмдэгнүүд л уншигдана.
Тиймээс үгээ хадгалахдаа char биш wchar_t -г ашиглаарай
Жишээ нь:
wchar_t * ch = L"өвөө";
wchar_t * ch = L"ᠡᠪᠦᠭᠡ";
Таны хүссэн хариу хэвлэгдэх болно. Энэ жишээ шиг зүгээр нэг хэвлэхдээ гол нь биш С хэл таны оруулсан үгийг үнэн зөвөөр нь уншиж чадаж байна гэсэн үг юм.
Дараагийн удаа MySQL С хэлтэй хэрхэн хослуулах вэ, DBд байгаа монгол үсгээр хадгалсан датаг хэрхэн С хэл рүү унших вэ, DB рүүгээ хэрхэн монгол үсгээр бичсэн үг орсон query явуулах тухай бичих болно.
Monday, 5 August 2013
Friday, 19 July 2013
C/C++ Microsoft Visual Studio build хийхэд гардаг FATAL ERROR LNK1120
Өнөөдөр кодоо засч байгаад ийм алдаатай тулгарлаа.
error LNK2001: "struct st_mysql_res * __cdecl fetch_result(class ATL::CStringT<char,class ATL::StrTraitATL<char,class ATL::ChTraitsCRT<char> > >,struct st_mysql *)" (?fetch_result@@YAPAUst_mysql_res@@V?$CStringT@DV?$StrTraitATL@DV?$ChTraitsCRT@D@ATL@@@ATL@@@ATL@@PAUst_mysql@@@Z) 외부 기호를 확인할 수 없습니다.
1>E:\VStudio\projects\test\Debug\test.exe : fatal error LNK1120:
Ямар ч байсан fetch_result нэртэй функц, CString нь функцын параметерийн нэр. Тухайн үедээ шууд алдаагаа ойлголгүй Google-ээр баахан хайлаа.
Эцэст миний хийсэн алдаа бол
MYSQL_RES * fetch_result(CString, MYSQL *);
Анх функцээ зарлахдаа эхний параметерийг CString гэсэн мөртлөө сүүлд функц доторхийг засч эхний параметерийг char* луу сольсон байгаа юм.
MYSQL_RES * fetch_result(CString, MYSQL *); // функц зарласан хэсэг
,,,
MYSQL_RES * fetch_result(char * query, MYSQL * conn)
{
MYSQL_RES * res;
....
....
...
return res;
}
Тэгэхээр энэхүү алдаа нь
1т. Зарлаагүй функцийг дуудсан ториолдолд (минийхтэй адил тохиолдол)
2т. main функц байхгүй тохиолдолд гардаг юм байна.
Ер нь програм бичихдээ маш анхааралтай байхгүй бол анхааралгүйгээсээ болж алдаагаа засах гэж хамаг цагаа зарцуулах хэрэг гарна.
Энэ бичлэг маань С хэлний тухай анхниы бичлэг болж байна. Яг монголоор сураагүй болохоор тайлбарлаж бичихэд зарим хэллэгүүдийг буруу хэрэглэж байж магадгүй. Гэхдээ та бүхэнд програм бичихэд чинь миний блог бага ч гэсэн тус болно гэдэгт итгэлтэй байна.
error LNK2001: "struct st_mysql_res * __cdecl fetch_result(class ATL::CStringT<char,class ATL::StrTraitATL<char,class ATL::ChTraitsCRT<char> > >,struct st_mysql *)" (?fetch_result@@YAPAUst_mysql_res@@V?$CStringT@DV?$StrTraitATL@DV?$ChTraitsCRT@D@ATL@@@ATL@@@ATL@@PAUst_mysql@@@Z) 외부 기호를 확인할 수 없습니다.
1>E:\VStudio\projects\test\Debug\test.exe : fatal error LNK1120:
Ямар ч байсан fetch_result нэртэй функц, CString нь функцын параметерийн нэр. Тухайн үедээ шууд алдаагаа ойлголгүй Google-ээр баахан хайлаа.
Эцэст миний хийсэн алдаа бол
MYSQL_RES * fetch_result(CString, MYSQL *);
Анх функцээ зарлахдаа эхний параметерийг CString гэсэн мөртлөө сүүлд функц доторхийг засч эхний параметерийг char* луу сольсон байгаа юм.
MYSQL_RES * fetch_result(CString, MYSQL *); // функц зарласан хэсэг
,,,
MYSQL_RES * fetch_result(char * query, MYSQL * conn)
{
MYSQL_RES * res;
....
....
...
return res;
}
Тэгэхээр энэхүү алдаа нь
1т. Зарлаагүй функцийг дуудсан ториолдолд (минийхтэй адил тохиолдол)
2т. main функц байхгүй тохиолдолд гардаг юм байна.
Ер нь програм бичихдээ маш анхааралтай байхгүй бол анхааралгүйгээсээ болж алдаагаа засах гэж хамаг цагаа зарцуулах хэрэг гарна.
Энэ бичлэг маань С хэлний тухай анхниы бичлэг болж байна. Яг монголоор сураагүй болохоор тайлбарлаж бичихэд зарим хэллэгүүдийг буруу хэрэглэж байж магадгүй. Гэхдээ та бүхэнд програм бичихэд чинь миний блог бага ч гэсэн тус болно гэдэгт итгэлтэй байна.
Monday, 27 May 2013
Анхны тэмдэглэл
Өнөөдөр би анхны блогоо нээж байна.
Минийй хувьд програм бичих явцад ямар нэгэн мэдэхгүй зүйл гарахад Google хайлтыг их хэрэглэдэг. Тэр бүрд англи юмуу солонгосоор бичиж хайдаг. Учир нь монголоор бичихэд яг холбогдолтой бичлэг маань гарч ирдэггүй юм. Тиймээс энд би өөрийн програм бичих явцад хуримтлуулж буй туршлагаасаа бичиж байх болно.Энэхүү тэмдэглэл маань цаашид миний мартсанаа эргэн санах тэмдэглэл болохоос гадна яг одоо энэ блогийг үзэж буй хэн нэгэнд програм бичихэд үүсч буй бэрхшээл, алдааг засахад туслах заавар болно гэж бодож байна.
Эцэст нь хэлэхэд "Хүнд 1%ийн авьяас 99%ийн хичээл зүтгэл хэрэгтэй байдаг юм шүү. Шантралгүй хичээгээрэй."
Subscribe to:
Posts (Atom)