Fa درباره شی پاراگراف

ASANWEB

Member
براي اينكه آدرس درايو CDRom رو بديد اول بايد بدونيد دقيقا درايو CD كاربر چه درايوي هست براي اين منظور با دستور FileExist تو همه درايوها دنبال فايلي بگرديد كه اگه وجود داشت پس نتيجه ميگيريم كه درايو مربوطه همون درايو CD هست.

يك حلقه براي اينكار به شما كمك كنه. مثل اين دستور:
کد:
For i=67 To 90
  path$ = CHR(i) + ':\myfolder\myfile.xxx'
  FileExist("path$","x")
  If (x=1) Then
    CDdrive$ = CHR(i) + ':\\'
    Return()
  End
Next i

خب اینم نمیشه دوباره برمیگرده به همون مبحث قبلی که چجوری آدرس رو از متن جدا کنم ( که اون دستوری رو پیشنهاد دادید دنبالش رفتم ولی نتوسنم بنویسمش) من میخواستم یه آدرسی بدم که تو همون فایل html بدم و browser بتونه شناساییش کنه.
ممنون از جناب evil-gates که فعلا تنها کسی که به داد من میرسه ایشونه و با حوصله به سوالام جواب میده
 

evil_gates

اين نيز بگذرد ...
دوست من
موضوع خيلي واضح تر از اونه كه اينقدر باهاش مشكل داشته باشيد.

شما سورس يك فايل htm رو تو ديتابيستون ذخيره كرديد. تو اين فايل شما تعدادي عكس داريد كه وقتي اين فايل رو فراخواني ميكنيد نميتونه تصاوير رو نمايش بده. دليلشم اينه كه آدرس تصاوير شما تو اين فايل كامل نيست.
براي اينكه بتونيد تصاوير رو هم نمايش بديد بايد تو اين متن بگرديد و آدرسها رو اصلاح كنيد.

گام اول اينه كه بدونيم چه آدرسي رو بايد تغيير بديم. و آدرس كامل اون تصوير چي هست. خب ما آدرس عكس رو جدا ميكنيم و تو ديتابيسمون ذخيره ميكنيم.

همون مثلا قبلي رو در نظر بگيريد. شما تصويرتون رو تو پوشه pic قرار داديد و آدرسي كه تو فايل htm شما نوشته شده pic/pic.jpg هست.

اين آدرس رو تو فيلد بعدي ديتابيستون ذخيره ميكنيد و موقع فراخواني متن اين آدرس رو بخونيد و تو يك متغير رشته‌اي بريزيد.

گام بعدي اينه كه اين آدرس رو كامل كنيد. اين رو قبلا گفتم:
کد:
pic_path$ = '<SrcDir>\\' + db_address$

حالا بايد اين آدرس جديد رو با آدرس قبلي تو متن htm تون جايگزين كنيد.

براي اينكه بتونيد اين آدرس رو با آدرس قبلي جايگزين كنيد بايد بدونيد كه آدرس عكس تو متن htm شما تو چه خطي نوشته شده و با توابع رشته‌اي اين آدرس رو جايگزين كنيد.

براي اينكه بتونيم شماره خط موردنظر رو پيدا كنيم كافيه تو يك حلقه با تابع POS دنبال عبارتي بگرديم كه شبيه به مقدار ديتابيس ماست. اين كد رو ببينيد:
کد:
path$ = 'your html file address'
pic_path$ = '<SrcDir>\\'
For i=1 To NOL(path$)
  str$ = StrFromFile(path$,i,1)
  x = POS(db_address$,str$)
  If (x<>0) Then
    string$ = StrIns(str$,pic_path$,x)
    retval = StrToLine(path$,string$,i,TRUE)
    Return()
  End
Next i
تو اين كد تو فايل html موردنظر تو خطي كه تابع POS بتونه نتيجه جستجو رو پيدا كنه آدرس كامل تصوير رو به آدرس تصوير اضافه ميكنه. و بعد از حلقه خارج ميشه.
 

ASANWEB

Member
دوست من
موضوع خيلي واضح تر از اونه كه اينقدر باهاش مشكل داشته باشيد.

شما سورس يك فايل htm رو تو ديتابيستون ذخيره كرديد. تو اين فايل شما تعدادي عكس داريد كه وقتي اين فايل رو فراخواني ميكنيد نميتونه تصاوير رو نمايش بده. دليلشم اينه كه آدرس تصاوير شما تو اين فايل كامل نيست.
براي اينكه بتونيد تصاوير رو هم نمايش بديد بايد تو اين متن بگرديد و آدرسها رو اصلاح كنيد.

گام اول اينه كه بدونيم چه آدرسي رو بايد تغيير بديم. و آدرس كامل اون تصوير چي هست. خب ما آدرس عكس رو جدا ميكنيم و تو ديتابيسمون ذخيره ميكنيم.

همون مثلا قبلي رو در نظر بگيريد. شما تصويرتون رو تو پوشه pic قرار داديد و آدرسي كه تو فايل htm شما نوشته شده pic/pic.jpg هست.

اين آدرس رو تو فيلد بعدي ديتابيستون ذخيره ميكنيد و موقع فراخواني متن اين آدرس رو بخونيد و تو يك متغير رشته‌اي بريزيد.

گام بعدي اينه كه اين آدرس رو كامل كنيد. اين رو قبلا گفتم:
کد:
pic_path$ = '<SrcDir>\\' + db_address$

حالا بايد اين آدرس جديد رو با آدرس قبلي تو متن htm تون جايگزين كنيد.

براي اينكه بتونيد اين آدرس رو با آدرس قبلي جايگزين كنيد بايد بدونيد كه آدرس عكس تو متن htm شما تو چه خطي نوشته شده و با توابع رشته‌اي اين آدرس رو جايگزين كنيد.

براي اينكه بتونيم شماره خط موردنظر رو پيدا كنيم كافيه تو يك حلقه با تابع POS دنبال عبارتي بگرديم كه شبيه به مقدار ديتابيس ماست. اين كد رو ببينيد:
کد:
path$ = 'your html file address'
pic_path$ = '<SrcDir>\\'
For i=1 To NOL(path$)
  str$ = StrFromFile(path$,i,1)
  x = POS(db_address$,str$)
  If (x<>0) Then
    string$ = StrIns(str$,pic_path$,x)
    retval = StrToLine(path$,string$,i,TRUE)
    Return()
  End
Next i
تو اين كد تو فايل html موردنظر تو خطي كه تابع POS بتونه نتيجه جستجو رو پيدا كنه آدرس كامل تصوير رو به آدرس تصوير اضافه ميكنه. و بعد از حلقه خارج ميشه.

عزیز جون من نشستم کلی فکر کردم دیدم که این چه کاری؟!!
این کد ها آدرس رو از دیتا بیس میگیره و <SrcDir>\\ بهش اضافه میکنه و میفرسته به فایل html درسته؟
حالا اگر ما این <SrcDir>\\ از همون اول با آدرس میریختیم به دیتا بیش فرقی میکرد؟
من این کد رو میزنم همون میشه عزیز یعنی چون تو html کد <SrcDir>\\ معنی نداره از تو تمپ دنبالش میگرده و این نکته رو تا خودتون باهاش برخورد نکنید نمیتونید بفهمید و منم نمیدونم دیگه چجوری توضیح بدم واقعا این پروژه خیلی منو خسته کرده مخصوصا تو این روزای ماه رمضان و هر روز واسم یه بامبولی در میاد
 

ASANWEB

Member
راستی یه توضیح به ذهنم رسید شاید این رو در نظر نگرفته بودید مشکل من این هست در mmb در شی browser وقتی ما آدرس یک فایل html برای نمایش میدیم آدرسی که در اون فایل هست در اون آدرس ریشه فولدر ما میشه فولدری که اون فایل html درونش هست نه برنامه ما یعنی ماکرو <SrcDir> ما فقط مربوط به جایی میشه که فایل html هست
 

evil_gates

اين نيز بگذرد ...
عزیز جون من نشستم کلی فکر کردم دیدم که این چه کاری؟!!
این کد ها آدرس رو از دیتا بیس میگیره و <SrcDir>\\ بهش اضافه میکنه و میفرسته به فایل html درسته؟
حالا اگر ما این <SrcDir>\\ از همون اول با آدرس میریختیم به دیتا بیش فرقی میکرد؟
من این کد رو میزنم همون میشه عزیز یعنی چون تو html کد <SrcDir>\\ معنی نداره از تو تمپ دنبالش میگرده و این نکته رو تا خودتون باهاش برخورد نکنید نمیتونید بفهمید و منم نمیدونم دیگه چجوری توضیح بدم واقعا این پروژه خیلی منو خسته کرده مخصوصا تو این روزای ماه رمضان و هر روز واسم یه بامبولی در میاد

دوست من

ظاهرا گرسنگي ماه رمضان زيادي بهتون سخت ميگذره :دي

شما نميتونيد از SrcDir رو به ابتداي تصاويرتون اضافه كنيد و اون رو تو ديتابيس ذخيره كنيد.

دليلش اينه كه تمام عبارتي كه تو ديتابيس ذخيره شده عينا تو يك متغير رشته‌اي ريخته ميشه. شما مقدار اين متغير رشته‌اي رو حالا هرچي كه مي خواد باشه. چه آدرس چه متن چه عكس چه اصلا نوشته‌هاي چرت و پرت. با دستور StrToFile به يك فايل متني ارسال ميكنيد و چون اين فايل متني شما Embedded شده بوده بنابراين تو temp باز ميشه.

حالا با توجه به اين توضيح SrcDir ي كه تو temp خونده ميشه با SrcDir كه از طريق برنامه خونده ميشه به نظرتون مسيرش يكي هست؟

قطعا نه. به همين دليل عرض كردم خيلي ساده و راحت آدرس پوشه و نام فايل عكس رو تو فايل وبتون بديد يعني همون مثال myfolder\file1.jpg

اين عبارت تو يك متغير رشته‌اي ريخته ميشه همراه با تگهاي html تو ديتابيس ذخيره ميشه و بعد در زمان فراخواني با StrToFile به يك فايل متني منتقل ميشه و انتظار ميره كه تصاوير رو از پوشه myfolder بخونه و نمايش بده.

اما چون فايل متني تو temp باز شده و كنار خودش پوشه‌اي به نام myfolder نداره كه بخواد تصاويرش رو نشون بده مجبوريم آدرس واقعي تصاوير رو به كد html ي كه حاوي آدرس فايل عكس مربوطه هست اضافه كنيم.

اين آدرس رو از طريق ماكرو SrcDir بدست مياريم. و تو يك متغير رشته‌اي ميريزيم ومقدار اين متغير رو به اون خط تو فايل متني‌مون اضافه ميكنيم.

ماكرو SrcDir وقتي از طريق برنامه مقدار ميگيره در واقع آدرس محلي كه فايل اجرايي برنامه هست رو بر ميگردونه نه پوشه temp رو. بنابراين اگه پوشه تصاويرتون رو كنار برنامه قرار بديد و بعد طبق راهنمايي كه تو پستهاي قبلي كردم مقدار SrcDir رو تو يك متغير بريزيد و اون متغير رو به كد html تون اضافه كنيد قطعا آدرس صحيحي از تصوير بدست مياد.

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

به هر حال فكر ميكنم با اين توضيحات الان دقيقا ميدونيد چه كاري بايد انجام بديد نه؟ :wink:
 

ASANWEB

Member
قضیه به سادگیا هم که شما فکر میکنید نیست چون بیشتر از یک هفته است که فکر رو زندگی رو ازم گرفته من این کد شمارو استفاده کردم و الان کلا متن رو اجرا نمیکنه من مقدار متغیر db_address$ رو برابر با myfolder\ قرار دادم تا قبل از ایت متن اون ماکرو رو بزاره درست استفاده کردم؟
 

ASANWEB

Member
و بالاخره درست ششششششششششششد کارتون واقعا عالییی بود یه دنیا ممنون خیلی حال کردم :oops::oops:
راستی اگر این دستور Return() رو بر دارم چه اتفاقی میوفته؟ مورد بالارو که گفتم مشکل اینجا بود که دستور نمایان شدن آبجکت زیر این حلقه بود و دستور Return() مثل اینکه حلقه رو استاپ میکنه :cool:
 

Amit13

Well-Known Member
راستی اگر این دستور Return() رو بر دارم چه اتفاقی میوفته؟ مورد بالارو که گفتم مشکل اینجا بود که دستور نمایان شدن آبجکت زیر این حلقه بود و دستور Return() مثل اینکه حلقه رو استاپ میکنه :cool:

نه !!!!
دستور ()Return در اغلب برنامه نويسي هاي خطي براي خروج از شرط if است.اون دستور break كه حلقه رو متوقف ميكنه.
 
آخرین ویرایش:

evil_gates

اين نيز بگذرد ...
نه !!!!
دستور ()Return در اغلب برنامه نويسي هاي خطي براي خروج از شرط if است.اون دستور break كه حلقه رو متوقف ميكنه.

دوست من
دستور Return به طور كلي عمليات جاري رو متوقف ميكنه.

شما اگه ليستي از دستورات رو تو يك كليد يا يك اسكريپت نوشته باشيد و تو يكي از خطوطش از دستور Return استفاده كرده باشيد برنامه به ترتيب از بالا خط به خط دستورات رو اجرا ميكنه تا به دستور Return برسه و عمليات رو متوقف ميكنه. يعني دستورات بعدي رو حالا هرچي كه باشن (حلقه‌ها، شرطها، دستورات و ...) ديگه اجرا نميكنه.

اما از دستور Breake همونطور كه خودتون گفتيد معمولا داخل حلقه ها و براي شكستن حلقه ها استفاده ميشه و دستورات بعد از حلقه اجرا خواهند شد
 

جدیدترین ارسال ها

بالا