ورود

View Full Version : مبتدی: استفاده از رشته و مجموعه



Bita.Jo
یک شنبه 10 مرداد 1389, 10:05 صبح
سلام به دوستان دلفی کار
متاسفانه من به اشکالی برخوردم که 2 روزه هرچی اینترنت و Help دلفی رو گشتم چیزی پیدا نکردم.

من یک رشته مثلا [1,3,4,16,21] را از یک فایل ini. با دستور ReadString می خونم و میخوام اینو تبدیل به مجموعه عددی کنم. برای این کار یک حلقه گذاشتم و می خوام با دستور ReadBuffer یا ReadString رشته به طول یک بایت (کارکتر)را بخونم و به عناصر مجموعه ام اضافه کنم با دستور


Var
SetTmp:Set of 1..30;
Str1,Str2:String;
S:TStringStream;


begin
Str1:=Configuration.ReadString('Setting','Str','') ;
SetTmp:=[];
Str1:=S.Create(Str1);
Str2:=S.ReadString(1);



.
.

.ولی این دستورات اصلا کاری که من می خوام رو انجام نمی دهند. چون تابع ReadString مرتبا خطای Undeclare Identifier می داد با توجه به استفاده از یونیت Classes, SysUtils . به همین دلیل من مجبور به استفاده از کلاس TSringStream شدم درحالی که برنامه من Visual نیست و آبجکت پاسکال است.نمی دونم راهی است که همان رشته ای که از فایل خوانده میشه را بعنوان مجموعه تعریف کنم. تعریف فایل Ini. در اختیار خودم است. الان هم همه اش ایراد "Incompatible types TStringStream and ShortString " را می دهد در خط ReadString.


اگر کسی یک سورس کوچولو و کامل از کار بارشته ها (خواندن یک قسمت از رشته و کپی در رشته دیگر) برام بذاره ممنون میشم. توی اینترنت یونیت ها ی استفاده شده رو توی مثالها نداره. (قسمتUses رو میگم)
محیط برنامه نویسی دلفی 7


ممنون میشوم زودتر کمکم کنید:افسرده:

mofrad
یک شنبه 10 مرداد 1389, 11:39 صبح
فکر کنم از کلاس StrUtils استفاده کنید کارتون راه بیفته!
بعد میتونید با توابعی مثلreplacestr , rightstr ,... کار کنید.

Felony
یک شنبه 10 مرداد 1389, 14:53 عصر
کد شما سر تا پا اشکال هست ، Configuration از چه کلاسی هست ؟
چه طوری یک کلاس از TStringStream مشتق کردید و داخل Str1 که از نوع رشته هست ریختیدش ؟

فکر میمکنم شما اصول برنامه نویسی در زبان پاسکال و محیط دلفی رو نمیدونید ، در کل میتونید برای خوندن فایل ini از کلاس TIniFile از کتابخانه IniFiles استفاده کنید .

vcldeveloper
یک شنبه 10 مرداد 1389, 16:35 عصر
می تونید از کد زیر به عنوان نمونه استفاده کنید:
var
MySet : set of 1..30;
InputStr : string;
i: Integer;
StrList : TStringList;
begin
MySet := [];

/// This is our sample data. We assume it is read from an INI file.
InPutStr := '[1,2,3,4,5]';

StrList := TStringList.Create;
try
/// Removing brackets from the string.
InputStr := Copy(InputStr,2,Length(InputStr)-2);
/// Delimiting items in the string using TStringList.
StrList.DelimitedText := InputStr;
/// Adding items to the set
for i := 0 to StrList.Count-1 do
Include(MySet, StrToInt(StrList[i]));
finally
StrList.Free;
end;
end;

کلاس TStringList در یونیت Classes تعریف شده.