HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0414
AKIHIROソートで「ヴ」が最後になってしまいます。3解決


AKIHIRO

リンク

2007/4/14(Sat) 21:47:56|NO.7459

ちょっと前からHSPやってました。
カタカナ表記の名前のデータのソートをすると「ヴ」が最後にきてしまします。
エクセルなどではできるのですが、何かいい方法はないですか?
対処法として「ヴ」の時のpeekの値のとき「ウ」のあとにいれ、「ヴ」以降の文字のとき、
+1してずらして「ヴ」を途中に挿入させることを考えました。
それ以外でいい対処ほうがあれば教えていただきたいです。



この記事に返信する


pizza

リンク

2007/4/15(Sun) 11:14:13|NO.7466

下記の比較方法で戻り値が両方-1の方法を使ってみてください。
(sortnoteやsortstrでも大丈夫だと思います)



#uselib "kernel32.dll" #cfunc lstrcmp "lstrcmpA" str, str #cfunc CompareString "CompareStringA" int, int, str, int, str, int #uselib "msvcrt.dll" #cfunc strcmp "strcmp" str, str #cfunc strcoll "strcoll" str, str #func setlocale "setlocale" int, str #define LOCALE_USER_DEFAULT 0x400 #define LC_ALL 0 setlocale LC_ALL, "" // strcollの為 u = "ウ" vu = "ヴ" e = "エ" mes "!=で比較" mes u != vu mes vu != e mes "\nstrcmpで比較" mes strcmp(u, vu) mes strcmp(vu, e) mes "\nstrcollで比較" // setlocaleのp2で結果が変わる mes strcoll(u, vu) mes strcoll(vu, e) mes "\nCompareStringで比較" // 戻り値の規則をあわせる為-2しています mes CompareString(LOCALE_USER_DEFAULT, 0, u, -1, vu, -1) - 2 mes CompareString(LOCALE_USER_DEFAULT, 0, vu, -1, e, -1) - 2 mes "\nlstrcmpで比較" mes lstrcmp(u, vu) mes lstrcmp(vu, e) stop



AKIHIRO

リンク

2007/4/15(Sun) 12:46:40|NO.7468

自己解決しました。
以下のスクリプトです。
pizzaさんありがとうございました。


array=6 dim i,2 dim count,1 dim point,1 sdim tmp,16 sdim stbuf,15,array stbuf="ウィル","ジェームス","ヴァージニア","ウァーイ","ガリッチ","アラン" repeat array point=cnt+1 mes "no."+point+"=\""+stbuf.cnt+"\"" loop repeat 6 k=5-cnt repeat array count=cnt repeat array-1 point=cnt+1 i.0=wpeek (stbuf.cnt,k) if i.0>17795:i.0=i.0+1 if i.0=38020:i.0=17796 i.1=wpeek (stbuf.point,k) if i.1>17795:i.1=i.1+1 if i.1=38020:i.1=17796 if i.0>i.1{ tmp=stbuf.point:stbuf.point=stbuf.cnt:stbuf.cnt=tmp } loop loop loop mes " " repeat array point=cnt+1 mes "no."+point+"=\""+stbuf.cnt+"\"" loop stop



AKIHIRO

リンク

2007/4/15(Sun) 13:02:31|NO.7469

解決しましたので、解決済みにします。



ONION software Copyright 1997-2021(c) All rights reserved.