PDA

View Full Version : گر lable0=100,101,102,104 باشد آنگاه lable4=104,lable3=102,lable2=101,lable1=100



ali_abbasi22145
سه شنبه 24 فروردین 1389, 13:18 عصر
سلام
من می خواهم اگر lable0=100,101,102,104 باشد آنگاه lable4=104,lable3=102,lable2=101,lable1=100

عقاب سیاه
سه شنبه 24 فروردین 1389, 14:41 عصر
من می خواهم اگر lable0=100,101,102,104 باشد آنگاه lable4=104,lable3=102,lable2=101,lable1=100
می شه بیشتر توضیح بدید ؟یعنی واضح تر!!
منظورتون متن لیبل است؟

ali_abbasi22145
سه شنبه 24 فروردین 1389, 15:03 عصر
اگر ورودی 100,101,102,104 در یک خط باشد یعنی با ویرگول جدا شده باشد هر کدام را جدا کند مثلا هرکدام در یک خط. که چهارخط جدا ازهم شود.

vcldeveloper
سه شنبه 24 فروردین 1389, 17:56 عصر
قبلا درباره اش توضیح دادم، کد هم نوشتم. اون متن رو بدید به خصوصیت DelimitedText یک StringList، و خصوصیت Delimiter آن را هم روی کاما (,) تنظیم کنید، خودش اون رو به رشته های مجزا شده بر اساس کاما تبدیل میکنه. رشته های مجزا شده رو می تونید با استفاده از خصوصیت Items از StringList بخونید. چون قبلا کدش را اینجا گذاشتم، مجددا کدش را نمی نویسم. جستجو کنید.

ali_abbasi22145
چهارشنبه 25 فروردین 1389, 09:15 صبح
قبلا درباره اش توضیح دادم، کد هم نوشتم. اون متن رو بدید به خصوصیت DelimitedText یک StringList، و خصوصیت Delimiter آن را هم روی کاما (,) تنظیم کنید، خودش اون رو به رشته های مجزا شده بر اساس کاما تبدیل میکنه. رشته های مجزا شده رو می تونید با استفاده از خصوصیت Items از StringList بخونید. چون قبلا کدش را اینجا گذاشتم، مجددا کدش را نمی نویسم. جستجو کنید.

سلام
هرچه گشتم پيدا نكردم!

Mahmood_M
چهارشنبه 25 فروردین 1389, 15:04 عصر
این طوری هم میشه :
یک Type به صورت زیر تعریف کنید :
type
TStrs = array of String;

تابع زیر رو هم در سورس برنامتون بنویسید :
function SplitString(S : String; D : Char) : TStrs;
var
I, L : Integer;
begin
L := 0;

for I := 1 to Length(S) do
begin
if S[I] = D then
L := L + 1;
end;

if L = 0 then
Exit;

SetLength(Result, L + 1);

for I := 0 to L do
begin
if Pos(String(D), S) <> 0 then
begin
Result[I] := Copy(S, 1, Pos(String(D), S)-1);
Delete(S, 1, Pos(String(D), S));
end
else
Result[I] := S;
end;
end;
برای ورودی های تابع به S مقدار رشته ی اصلی رو بدید ( مثلا : 100,200,300 ) و به D هم یک کارکتر به عنوان جدا کننده مثل ',' بدید تا بر اساس اون رشته ها جدا بشن ، در نهایت به صورت زیر می تونید مقادیر رو در یک نوع TStrs که از نوع آرایه تعریف کردید داشته باشید ( مثال ) :
var
M : TStrs;
S : String;
begin
S := '100,200,300';
M := SplitString(S, ',');
end;

یک برنامه ی نمونه هم ضمیمه کردم ...

موفق باشید ...

alinikaein
شنبه 28 فروردین 1389, 18:21 عصر
محمود جان، چرا لقمه را دور سرت چرخوندی؟
آقای کشاورز که راه بهتر را گفته که:

var
MyStrLst: TStringList;
begin
MyStrLst := TStringList.Create;
MyStrLst.Delimiter := ',';
MyStrLst.Text := '101,102,103';
ShowMessage(MyStrLst.String[2]);
end;


یا علی... موفق باشی...

Felony
شنبه 28 فروردین 1389, 18:53 عصر
محمود جان، چرا لقمه را دور سرت چرخوندی؟
آقای کشاورز که راه بهتر را گفته که:

var
MyStrLst: TStringList;
begin
MyStrLst := TStringList.Create;
MyStrLst.Delimiter := ',';
MyStrLst.Text := '101,102,103';
ShowMessage(MyStrLst.String[2]);
end;


یا علی... موفق باشی...
کدتون اشکال دار ، تصحیح شدش اینه :


var
MyStrLst: TStringList;
begin
MyStrLst := TStringList.Create;
MyStrLst.Delimiter := ',';
MyStrLst.DelimitedText := '101,102,103';
ShowMessage(MyStrLst.Strings[2]);
end;