PDA

View Full Version : رشته



iamehsan56
شنبه 26 اردیبهشت 1388, 10:12 صبح
سلام .
چطوری می شه یه لیست داشت از یه سری رشته که از روی اونا یه index به دست آورد


String1----->1
String2----->3
String3----->2

من در واقع می خوام با داشتن string1 به 1 برسم و باش داشتن string2 به 3
چطوری می تونم این کارو بکنم
ممنون

Delphi-Man
شنبه 26 اردیبهشت 1388, 12:55 عصر
سلام .
چطوری می شه یه لیست داشت از یه سری رشته که از روی اونا یه index به دست آورد


String1----->1
String2----->3
String3----->2

من در واقع می خوام با داشتن string1 به 1 برسم و باش داشتن string2 به 3
چطوری می تونم این کارو بکنم
ممنون
سلام برای اینکه اطلاعات رو در لیست ذخیره کنید این کارو انجام بدید. در ضمن s:tstrings رو باید در قسمت public بنویسید. بعد از اختصاص اطلاعات به متغیر s با اجرای function GetItem می تونید با دادن مقدار رشته مورد نظر مثل string1 و تعیین حساس بودن به بزرگ و کوچکی حروف می تونه اولین index آیتم رو بهتون بده.
موفق باشید.



function GetItem(Item:string;CaseSensitive:boolean):integer ;
public
S:Tstrings;

...

function GetItem(Item:string;CaseSensitive:boolean):integer ;
var i:integer;
str:string;
begin
result:=-1;
if (not casesensitive) then item:=lowercase(item);
for i:=1 to s.items.count do begin
if (not casesensitive) then str:=lowercase(s.strings[i-1]);
else str:=s.strings[i-1];
if (str=item) then begin
result:=i-1;
exit;
end;
end;
//not found!
end;

{??? har chi khastin (procedure, function, button click,...) }
begin
try
s:=tstringlist.create;
s.add('string1');
{...}
finally
s.free;
end;
end;

iamehsan56
شنبه 26 اردیبهشت 1388, 13:31 عصر
ممنون . اما منظورم این نبود که برم با یه حلقه جستجو کنم چون تعداد رشته هام زیاده . می خوام یه تناظر یک به یک باشه که از روی رشته مقدار عددیش در بیاد

Felony
شنبه 26 اردیبهشت 1388, 18:13 عصر
فکر میکنم با TStringList کارت راه بیافته .

vcldeveloper
شنبه 26 اردیبهشت 1388, 20:15 عصر
اما منظورم این نبود که برم با یه حلقه جستجو کنم چون تعداد رشته هام زیاده . می خوام یه تناظر یک به یک باشه که از روی رشته مقدار عددیش در بیاد
اگر مطمئن هستید رشته های شما تکراری نیستند، همون TStringList میتونه کار شما را راه بیاندازه:

Index := StringList.IndexOf(String1);

اگر نه، و میخواید هر مقدار رشته همواره به عدد یکتایی اشاره کنه، باید درباره Hash Table و چگونگی پیاده سازی آن تحقیق کنید.