ورود

View Full Version : سوال: sort فارسي فيلدهاي كاركتري



jooybar
یک شنبه 13 بهمن 1387, 10:00 صبح
من براي ساخت ايندكس براي فيلدهاي فارسي در vfp مشكل دارم ظاهرا يكي از اساتيد در اين زمينه تابعي نوشته بودند(فكر كنم جناب كيا).
من اون تابع رو شديدا نياز دارم .
اساتيد محترم لطفا لينك اون رو قرار بدين :ناراحت:

shamim_41
یک شنبه 13 بهمن 1387, 15:37 عصر
سلام دوست عزیز
چرا سرچ نمی کنی ؟
اینکه لینک رو بزاریم میشه لقمه حاضر و آماده لطفا کمی هم قبل از ایجاد تاپیک یک جستجوی کوچولو انجام بدید. به هرحال تابع مورد نظر شما که توسط استاد بزرگوار آقا کیا طراحی شده به نام farsisort می باشد که توضیحات کافی در همان لینک وجود دارد.

jooybar
دوشنبه 14 بهمن 1387, 11:46 صبح
سلام دوست عزیز
چرا سرچ نمی کنی ؟
اینکه لینک رو بزاریم میشه لقمه حاضر و آماده لطفا کمی هم قبل از ایجاد تاپیک یک جستجوی کوچولو انجام بدید. به هرحال تابع مورد نظر شما که توسط استاد بزرگوار آقا کیا طراحی شده به نام farsisort می باشد که توضیحات کافی در همان لینک وجود دارد.

دوست عزيز سرچ كردم ولي نتيجه نگرفتم !
شما هم سرچ كنيد تا متوجه شويد
در ضمن آدرس لينك مورد نظر حداكثر يك خط بود و مفيد ولي انتقاد شما سه خط بود و ...
در هر صورت ممنون.

jalal morevaj
دوشنبه 14 بهمن 1387, 14:40 عصر
سلام من هم یکبار همچین تاپیکی را دیده ام به هر حال شما باید از راست به چپ ایندکس بندی کنید مثلا اگر فیلدی بنام NAME داشته باشید میتوانید از این دستور برای ایندکس کردن استفاده کنید :

INDEX on ;
SUBSTR(name,1,1) + SUBSTR(name,2,1) ;
+ SUBSTR(name,3,1) + SUBSTR(name,4,1) + SUBSTR(name,5,1) ;
+ SUBSTR(name,6,1) + SUBSTR(name,7,1) + SUBSTR(name,8,1) ;
+ SUBSTR(name,9,1) + SUBSTR(name,10,1) + SUBSTR(name,11,1) ;
+ SUBSTR(name,12,1) + SUBSTR(name,13,1) + SUBSTR(name,14,1) ;
+ SUBSTR(name,15,1) + SUBSTR(name,16,1) + SUBSTR(name,17,1);
+ SUBSTR(name,18,1) + SUBSTR(name,19,1) + SUBSTR(name,20,1);
+ SUBSTR(name,21,1)+ SUBSTR(name,22,1) + SUBSTR(name,23,1) ;
+ SUBSTR(name,24,1) + SUBSTR(name,25,1)+ SUBSTR(name,26,1) ;
+ SUBSTR(name,27,1) ;
TAG name1

و برای جستجو مشابه همین کار را با دستور seek انجام دهید

shamim_41
دوشنبه 14 بهمن 1387, 15:30 عصر
دوست عزيز سرچ كردم ولي نتيجه نگرفتم !
شما هم سرچ كنيد تا متوجه شويد
درسته حق باشماست شرمنده !
با اجازه استاد کیا و استاد توکل کدش میزارم توسایت .


FUNCTION FarsiSort
LPARAMETERS cString
LOCAL lcSourceStr, lcSortStr, lcSortedStr, lcChar, lnLocate, i
lcSortedStr=""
lcSortStr = 'ءآأؤإئابپةتثجچحخدذرزژسشص طظعغفقكکگلمنهوي'
lcSourceStr = 'ءآأؤإئابةتثجحخدذرزسشصض×ط عغـفقكààلâمنهوي'
FOR i=1 TO LEN(cString)
lcChar = SUBSTR(cString, i, 1)
lnLocate = AT(lcChar, lcSortStr)
lcSortedStr=lcSortedStr + IIF(lnLocate <>0 , SUBSTR(lcSourceStr, lnLocate, 1), lcChar)
NEXT
RETURN lcSortedStr

amir.azimi2000
دوشنبه 24 فروردین 1388, 16:21 عصر
با سلام .
دوست عزيز Shamim :
اين كد را كه گذاشته بوديد كار نكرد (يعني جواب اشتباه ميدهد) .
جساراتا من يك تابع نوشتم كه فكر ميكنم درست كار ميكنه ، اگر دوست داشتيد ميگذارم اينجا شما هم تست كنيد .
براي اجرا لطفا در پنجره تغيير ساختار جدول در تب ايندكس وارد كنيد (Fsort(FieldName ، من زدم كار كرد ! شما چطور ؟
البته به دليل عدم ارسال فايل پيوست با اجازه اساتيد و مديران محترم ، كد آنرا اينجا ميگذارم .

PARAMETERS TPARA
IF !TYPE('TPARA') = "C"
RETURN
ENDIF
TPARA = ALLTRIM(TPARA)
IF ISBLANK(TPARA)
RETURN
ENDIF
MPC = TPARA
STR1 = 'آابپتثجچحخدذرزژسشصضطظعغف كگلمنوهي'
STR2 = '123456789ABCDEFGHIJKLMNOPQRSTUVWX'
FOR I = 1 TO 32
MPC = STRTRAN(MPC,RIGHT(LEFT(STR1,I),1),RIGHT(LEFT(STR2, I),1))
ENDF
RETURN MPC

shamim_41
پنج شنبه 27 فروردین 1388, 12:59 عصر
سلام دوست گرامی
یعنی چه جواب اشتباه می دهد؟ لطفا به مثال زیر نگاه کنید

CLOSE ALL
CLOSE DATABASES
SET SAFETY OFF
SET EXCLUSIVE ON
SET ESCAPE OFF
SET TALK OFF
SET CONSOLE OFF
jn=1
create table test (tname c(20),trow n(1,0))
USE test
DO whil jn<10
APPEND BLANK
REPLACE trow WITH jn
DO CASE
CASE jn=1
REPLACE tname WITH 'ÊåÑÇä'
CASE jn=2
REPLACE tname WITH 'íáÇä'
CASE jn=3
REPLACE tname WITH 'åãÏÇä'
CASE jn=4
REPLACE tname WITH 'äæÑ'
CASE jn=5
REPLACE tname WITH 'ãÔåÏ'
CASE jn=6
REPLACE tname WITH 'ÂÐÑÈÇíÌÇä'
CASE jn=7
REPLACE tname WITH 'ÇíáÇã'
CASE jn=8
REPLACE tname WITH 'ÇÑæãíå'
CASE jn=9
REPLACE tname WITH 'ÈÇÈá'
CASE jn=10
REPLACE tname WITH 'ÓÇÑí'
ENDCASE
jn=jn+1
ENDDO
BROWSE
INDEX on farsisort(tname) TAG test
BROWSE
SET SAFETY On
SET EXCLUSIVE Off
SET ESCAPE On
CLOSE ALL
CLOSE DATABASES


لطف کنید یک مثال بانک خالی از کدی که گذاشتی بزار تو سایت