امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل با string
نویسنده پیام
mohamad5228 آفلاین
كاربر تک ستاره
*

ارسال‌ها: 30
موضوع‌ها: 6
تاریخ عضویت: شهریور ۱۳۸۷

تشکرها : 8
( 29 تشکر در 6 ارسال )
ارسال: #1
مشکل با string
سلام
یه نگاه به کد زیر بیاندازید

این کد یک متن رو از یک فایل متنی تا رسیدن به به نقطه میخونه و هر کلمه رو به یک رشته نسبت میده.
ولی چند تا مشکلی که وجود داره اینه که باید طول آرایه حداقل به اندازه طولانی ترین کلمه باشه و تعداد آرایه ها به اندازه طولانی ترین جمله واین یعنی اشغال حافظه بدون استفاده من میخواستم این مشکل رو با استفاده از string حل کنم ولی نمیدونم چه طور میشه یک رشته دو بعدی رو به صورت کاراکتری پر کرد (دلفی این رو ارور میده
کد:
typ
word : array of sttring;
word[][] := 'h')
در ضمن نمیتونم کاراکتر ها رو برابر NULL ( مثل سی)قرار بدم
لطفا کمک کنید.
(آخرین ویرایش در این ارسال: ۱۵-مهر-۱۳۸۷, ۲۰:۰۸:۴۷، توسط mohamad5228.)
۱۱-مهر-۱۳۸۷, ۲۳:۴۷:۳۸
ارسال‌ها
پاسخ
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #2
RE: مشکل با string
شما باید از تابع setlenth برای تنظیم طول ارایتون در زمان دلخواه استفاده کنین
برای کسب اطلاعات بیشتر به تاپیک زیر مراجعه کنید
http://forum.iranled.com/showthread.php?tid=6800
۱۲-مهر-۱۳۸۷, ۱۲:۵۴:۲۴
وب سایت ارسال‌ها
پاسخ
mohamad5228 آفلاین
كاربر تک ستاره
*

ارسال‌ها: 30
موضوع‌ها: 6
تاریخ عضویت: شهریور ۱۳۸۷

تشکرها : 8
( 29 تشکر در 6 ارسال )
ارسال: #3
RE: مشکل با string
ممنون ، تاپیک جالبی بود( البته هنوز تمامش رو نخوندم) ولی مشکل حل نشد
وقتی از آرایه دو بعدی کاراکتری ثابت استفاده میکنم مثلا با دستور
showmessage(w[i]);
تمام ستونهای سطر iام چاپ میشد ولی در آرایه های پویا این طور نیست یعنی اگر تعریف کنیم
w : array of array of char;
setlength(w,16,16);
وقتی بنویسیم
ShowMessage(w[i]);
ارور زیر رو داریم
[Error] Unit1.pas(70): Incompatible types: 'String' and 'dynamic array'
[Fatal Error] Project2.dpr(5): Could not compile used unit 'Unit1.pas'
این موارد برای رشته ها هم صادقه.
۱۳-مهر-۱۳۸۷, ۱۱:۰۷:۳۱
ارسال‌ها
پاسخ
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #4
RE: مشکل با string
تو ارایه های 1 بعدی ستونی وجود نداره و ادرس شما w[i] مربوط به یک بلاک ثابت از ارایه هست که با این دستور محتویات اون بلاک نشون داده میشه اما تو ارایه های 2 بعدی شما هم شما برای نمایش هر بلاک باید شماره سطر و ستون رو بدید برای چاپ یک ستون باید با استفاده از یک حلقه کل ستون رو پیمایش کنین که در این حالت مقدار سطر ثابته و مقدار ستون به نسبت متغییر حلقه تغییر میکنه
۱۳-مهر-۱۳۸۷, ۱۱:۵۶:۲۴
وب سایت ارسال‌ها
پاسخ
mohamad5228 آفلاین
كاربر تک ستاره
*

ارسال‌ها: 30
موضوع‌ها: 6
تاریخ عضویت: شهریور ۱۳۸۷

تشکرها : 8
( 29 تشکر در 6 ارسال )
ارسال: #5
RE: مشکل با string
من هم به این روش فکر کردم ولی این فقط برای چاپ کلمه مفیده ولی من یک کلمه رو بصورت کامل میخوام چو باید بلاهای دیگه ای مثل مقایسه باکلمه دیگه و.. رو سرش بیارم .
کد به صورت زیر اصلاح شد و مشکل تعداد کلامات حل شد ولی تعداد حروف نه .
اگه راه حل دیگه ای نیست
میشه کاری کرد که کاراکتر ها NULL بشه ؟
کد:
var
yourfile : TextFile;
source : TextFile;
i,j,n: integer;
wo : array[1..1,1..15] of char;
w : char;
word : array of string;

begin

AssignFile(source, 'f:/Test.txt');
AssignFile(yourFile, 'f:/Test2.txt');

i := 0;

ReWrite(yourFile);
Reset(source);
Read(source,w);

while w <> '.' do
begin

while w = ' ' do
Read(source,w);

if w = '.' then
break ;

i := i+1;
j := 1;

while (w <> ' ') and (w <> '.') do
begin
wo[1][j] := w;
j := j+1;
Read(source,w);
end;

setlength(word,i);
word[i-1] := wo[1] ;




ShowMessage(word[i-1]);
end;


for n := 0 to i-1 do
writeLn(yourFile,word[n]);

// Close the file for the last time
CloseFile(source);
CloseFile(yourFile);
button1.Enabled := false;

end;
۱۳-مهر-۱۳۸۷, ۱۳:۰۰:۲۸
ارسال‌ها
پاسخ
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #6
RE: مشکل با string
میتونین بین هر کلمه یک space قرار بدین تا بتونین کلمات و حروف رو مقایسه کنین
شما چرا از عناصر دلفی مثل memo و tstringlist استفاده نمیکنین؟ کارتونو اسونتر میکنن
۱۳-مهر-۱۳۸۷, ۱۵:۲۴:۱۱
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : mohamad5228
mohamad5228 آفلاین
كاربر تک ستاره
*

ارسال‌ها: 30
موضوع‌ها: 6
تاریخ عضویت: شهریور ۱۳۸۷

تشکرها : 8
( 29 تشکر در 6 ارسال )
ارسال: #7
RE: مشکل با string
:cool:lord_viper عزیز خیلی ممنون از راهنمایی هاتون
واقعا توجه شما به این تاپیک و پاسخ دادن به یک مبتدی رو باید ستودClap
نقل قول: میتونین بین هر کلمه یک space قرار بدین تا بتونین کلمات و حروف رو مقایسه کنین
منظور تون رو متوجه نشدم چون این کد با توجه به space بین کلمات اونها رو از هم تمیز میده ولی وقتی میخاد دوباره همون کلمه رو تو یک فایل دیگه بنویسه چون کاراکتر های اضافی داره باقی رو به دلخواه خودش پر میکنه مثلا book رو مینویسه bookِِّؤّآۀِی.
نقل قول: شما چرا از عناصر دلفی مثل memo و tstringlist استفاده نمیکنین؟ کارتونو اسونتر میکنن
چون بلد نیستم!!!!ShyQ;
من یک مدت سی کار کردم بعد یکهو بسرم زد یک مترجم متن بنویسم (هر چند هدف بزرگیه ولی من ای کار رو میکنمCool)
البته کدها والگوریتم هارو باتوجه به زبان سی نوشتم ولی دیدم از یک فایل نمیتونم به عنوان دیتا بیس استفاده کنم شروع کردم به پرسجو تا رسیدم به دلفی
حالا باید کدها والگوریتم ها رو به دلفی برگردونم.Confused
۱۴-مهر-۱۳۸۷, ۱۰:۴۸:۱۶
ارسال‌ها
پاسخ
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #8
RE: مشکل با string
خب خوبه حالا شما بگین دقیقا میخواهین با این کدها چیکار کنین تا من بتونم بیشتر کمکتون کنم بهتره به هیچ عنوان از ارایه های کاراکتری استفاده نکنین string بهتره میتونه اون کلمه رو تو خودش نگه داره و اون مشکلات حروف اظافه حل میشه
۱۴-مهر-۱۳۸۷, ۱۲:۳۲:۴۷
وب سایت ارسال‌ها
پاسخ
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #9
RE: مشکل با string
سلام دوست عزیز
این سورس رو واستون اماده کردم یک جدا کننده کلمات هست شما فایلتونو به برنامه میدین این برنامه کلمات رو جدا میکنه و در listbox نمایش میده برنامه با سورس هست تا شما بتونین هر جور که مایلین تغییرش بدین
موفق باشید
دانلود
حجم 189kb
۱۴-مهر-۱۳۸۷, ۱۷:۱۰:۴۶
وب سایت ارسال‌ها
پاسخ
mohamad5228 آفلاین
كاربر تک ستاره
*

ارسال‌ها: 30
موضوع‌ها: 6
تاریخ عضویت: شهریور ۱۳۸۷

تشکرها : 8
( 29 تشکر در 6 ارسال )
ارسال: #10
RE: مشکل با string
خیلی ممنون از لطفتون
من وقتی پست شماره هشت رو میخوندم تو کلاس "روشهای چندمتغیری پیوسته ۱"بودم (به لطف ایرانسل و operamini ) همونجا با توجه به جمله آخرتون ایده زیر به ذهنم رسید و نیم ساعت پیش که اومدم خونه تو دلفی اجراش کردم درست شد حالا دیگه نه کاراکتر اضافه دارم نه رشته اضافیSmile.HappyClap
کد:
i := i+1;
  setlength(word,i);                      

  while (w <> ' ') and (w <> '.') do
  begin
    word[i-1] := concat(word[i-1],w);
    Read(source,w);
  end;

  //ShowMessage(word[i-1]);
البته فایلی رو که فرستادید رو دانلود میکنم
باز هم از کمکهاتون متشکرم حالا میرم کار با دیتا بیس تو دلفی رو یاد بگیرم اگه در این مورد هم پیشنهادی دارید با گوش جان میشنوم.
(آخرین ویرایش در این ارسال: ۱۵-مهر-۱۳۸۷, ۲۰:۰۵:۵۴، توسط mohamad5228.)
۱۵-مهر-۱۳۸۷, ۰۱:۴۵:۳۹
ارسال‌ها
پاسخ
mohamad5228 آفلاین
كاربر تک ستاره
*

ارسال‌ها: 30
موضوع‌ها: 6
تاریخ عضویت: شهریور ۱۳۸۷

تشکرها : 8
( 29 تشکر در 6 ارسال )
ارسال: #11
RE: مشکل با string
nod 32Exclamation اخطار ویروسی بودن میده.!013
۱۵-مهر-۱۳۸۷, ۱۱:۴۶:۱۰
ارسال‌ها
پاسخ


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS