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

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
مطمئنيد ؟ آخه من قبلا با مشكلي شبيه به اين تو اين پلاگين درگير بودم و بعد از اينكه خاصيت فيلدم رو text كردم مشكلم حل شد. اينو بر حسب تجربه قبلي عرض كردم.
من این موضوع رو براساس توضیحات جناب Silvercover در مثال SQLiteIntro عرض کردم:
The way in which SQLite stores data is built upon the realization that strong typing of data, as found in virtually every RDBMS on the market, is actually not a useful thing. A database is designed to store and retrieve data, plain and simple, and as such the developer should not have to declare a column as numeric, textual, or binary, or tie it to any other specific data type. Needing to do so is a legacy weakness of the underlying system that had to be reflected in SQL, not a feature added to the language.

SQLite is "typeless." It makes no difference whether you put a text string into an integer column or try to shove binary data into a text type. In fact you canand shouldspecify the column types when each table is created. SQLite's SQL implementation allows you to do this, but it's actually ignored by the engine.

That said, it's still a good idea to include the column data types in your CREATE TABLE statements to help you think through the database design thoroughly and as a reminder to yourself and a hint to other programmers as to what your intended use of each column was. Suppose, also, that in the future you want to migrate or mirror your data onto an RDBMS that does require column typingyou'll be glad your table definitions are well documented.
و همچنین این صفحه: http://www.sqlite.org/datatypes.html

ولی خب، در عمل این موارد رو تست نکردم که مثلاً نوع داده ی CHAR چه تفاوتی با TEXT داره !
اگر امکانش هست تجربه تون در این مورد رو با من و سایر کاربران به اشتراک بگذارید
ممنون
 

evil_gates

اين نيز بگذرد ...
من اين توضيحات رو نديده بودم.

اما يادمه تو يكي از پروژه هايي كه با اين پلاگين ميساختم يكي از فيلدهام مقدار زيادي داده بايد ذخيره ميكرد. ابتدا خاصيت فيلد من char بود اما من مشكل داشتم و نميتونستم مقادير زياد رو تو اين فيلد ثبت كنم.

چون ميدونستم زبان sql براي مقادير زياد از خاصيت text يا blob استفاده ميكنه خاصيت فيلدم رو عوض كردم و مشكلم حل شد.

البته حتما ميدونيد كه تو sql خاصيت char در بازه معيني كه تعريف ميشه ميتونه كاراكتر درون خودش ثبت كنه اما blob يا text مقدارش متغير و وابسته به منابع حافظه در اختيار هست.

اگه فرض شما صحيح باشه و اين پلاگين تفاوتي بين char و text يا هر خاصيت ديگه اي قائل نشه بنابراين لزومي نداره كه فيلدي كه ميسازيم خاصيتي هم براش تعيين كنيم، اين منطقي هست؟ !!!
 

ASANWEB

Member
evil_gates جان من از اون روش ذخیره در فایل متنی استفاده کردم و الانم یه مشکلی برام پیش اومده که آدرس اون تصویری که میخوام به دیتا بیس بدم چجوری بدم که تو سی دی اجرا بشه؟
 

evil_gates

اين نيز بگذرد ...
evil_gates جان من از اون روش ذخیره در فایل متنی استفاده کردم و الانم یه مشکلی برام پیش اومده که آدرس اون تصویری که میخوام به دیتا بیس بدم چجوری بدم که تو سی دی اجرا بشه؟

متوجه منظورتون نشدم دوست عزيز

برنامه شما تو كامپيوتر هست و تصاويرتون تو cd و قصد داريد از طريق برنامه تصاوير تو cd رو بخونيد؟ يا اينكه تصاوير و برنامتون كنار هم هستن؟

شما چه آدرسي رو تو ديتابيستون ثبت كرديد؟
 

ASANWEB

Member
متوجه منظورتون نشدم دوست عزيز

برنامه شما تو كامپيوتر هست و تصاويرتون تو cd و قصد داريد از طريق برنامه تصاوير تو cd رو بخونيد؟ يا اينكه تصاوير و برنامتون كنار هم هستن؟

شما چه آدرسي رو تو ديتابيستون ثبت كرديد؟

منظورم اینه که من میخوام عکس رو تو یک فولدر بریزم در کنار برنامه حالا فرضا برای این که آدرس این عکس توی فولدر رو بخونه
الان من آدرس عکس رو newfolder/pic.jpg میزنم عکس رو نمایش نمیده
یعنی الان index من توی فولدر MMBPlayer توی temp هست و منم اینو نمیخوام و میخوام ایندکسم جایی که برنامه هست باشه
 
آخرین ویرایش:

evil_gates

اين نيز بگذرد ...
... الان من آدرس عکس رو newfolder/pic.jpg میزنم عکس رو نمایش نمیده...

دوست عزيز

مشكل تو آدرس تصاويرتون هست. شما آدرس كامل تصاوير رو تو ديتابيستون قرار نداديد.

هر فايلي آدرسي داره كه اين آدرس از درايو شروع ميشه، بعد پوشه‌ها و بعد هم خود فايل مثلا x:\myfolder\myfile.jpg

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

حالا مسئله اينه كه چون شما پوشه تصاوير رو كنار برنامه قرار داديد و برنامه هم ممكنه تو هر مسيري قرار بگيره پس به جاي آدرس ثابت احتياج به يك آدرس وابسته داريد.

درست مثل ساير ماكروهايي كه تو برنامه براي آدرس دهي استفاده ميكنيد اينجا هم بايد همين كار رو انجام بديد. مثلا تو ديتابيستون بنويسيد:
کد:
<SrcDir>\myfolder\file1.jpg
وقتي اين آدرس از ديتابيس خونده ميشه هرجايي كه برنامه شما قرار داشته باشه برنامه به دنبال پوشه‌اي به نام myfolder و تصويري به نام file1.jpg مي گرده و اون رو نمايش ميده.
 

ASANWEB

Member
دوست عزيز

مشكل تو آدرس تصاويرتون هست. شما آدرس كامل تصاوير رو تو ديتابيستون قرار نداديد.

هر فايلي آدرسي داره كه اين آدرس از درايو شروع ميشه، بعد پوشه‌ها و بعد هم خود فايل مثلا x:\myfolder\myfile.jpg

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

حالا مسئله اينه كه چون شما پوشه تصاوير رو كنار برنامه قرار داديد و برنامه هم ممكنه تو هر مسيري قرار بگيره پس به جاي آدرس ثابت احتياج به يك آدرس وابسته داريد.

درست مثل ساير ماكروهايي كه تو برنامه براي آدرس دهي استفاده ميكنيد اينجا هم بايد همين كار رو انجام بديد. مثلا تو ديتابيستون بنويسيد:
کد:
<SrcDir>\myfolder\file1.jpg
وقتي اين آدرس از ديتابيس خونده ميشه هرجايي كه برنامه شما قرار داشته باشه برنامه به دنبال پوشه‌اي به نام myfolder و تصويري به نام file1.jpg مي گرده و اون رو نمايش ميده.

نه این راه درست نیست چون دستور <srcdir> تو mmb کاربرد داره و توی زبان html معنایی نداره و من هم عکسم بصورت کد html هست و وقتی این رو اضافه کردم عکسم دنبال این آدرس بود Temp/MMBPlayer/<SrcDir>/pic/pic.jpg

در ضمن کد من از توی یک فایل متنی embed شده خونده میشه و بعد توی browse نشون داده میشه مثل راهنمایی که اینجا کردید
 
آخرین ویرایش:

evil_gates

اين نيز بگذرد ...
نه این راه درست نیست چون دستور <srcdir> تو mmb کاربرد داره و توی زبان html معنایی نداره و من هم عکسم بصورت کد html هست و وقتی این رو اضافه کردم عکسم دنبال این آدرس بود Temp/MMBPlayer/<SrcDir>/pic/pic.jpg

در ضمن کد من از توی یک فایل متنی embed شده خونده میشه و بعد توی browse نشون داده میشه مثل راهنمایی که اینجا کردید

دوست عزيز
من دقيقا متوجه منظورتون نميشم. شما قبلا نگفته بوديد كه تصاوير رو تو فايل htm قرار داريد يا كجا ميخوايد ازش استفاده كنيد.

لطفا راجع به پروژتون واضح تر توضيح بديد تا بتونم راهنمايي كنم.
 

ASANWEB

Member
دوست عزيز
من دقيقا متوجه منظورتون نميشم. شما قبلا نگفته بوديد كه تصاوير رو تو فايل htm قرار داريد يا كجا ميخوايد ازش استفاده كنيد.

لطفا راجع به پروژتون واضح تر توضيح بديد تا بتونم راهنمايي كنم.

عزیز واضح تر دیگه نمیتونم بگم نمیدونم چرا متوجه نمیشید شما فرض کن من در کنار چیزایی که میریزم تو دیتابیس یک عکس هم میخوام بزارم که این عکس رو وقتی میزارم نمایش نمیده یعنی نمیتونه آدرس عکس رو فراخوانی کنه و تو تمپ دنبالش میگرده
متوجه شدیذ
 

evil_gates

اين نيز بگذرد ...
دوست من

پاسخ اين سوالتون رو قبلا دادم علت اينكه نميتونيد تصوير رو نمايش بديد به اين خاطر هست كه ادرس مربوطه كامل نيست. بايد آدرس كاملي رو تو ديتابيس ذخيره كنيد تا بعد بر اساس اون بتونه فايل موردنظر رو بخونه و نمايش بده.

اما اينكه شما تصوير رو كجا استفاده ميكنيد و چطور آدرس كامل بديم بحث ديگه‌اي داره.

از توضيحات اوليه شما تصور من اين بود كه شما تعدادي تصوير كنار برنامه داريد كه قصد داريد اونا رو تو mmb نمايش بديد خب در اينصورت كافيه آدرس تصويرتون رو تو همراه با ماكرو <SrcDir> تو ديتابيس ذخيره كنيد.

اما از توضيحات جديد شما احساس ميكنم شما تصويرتون رو تو يك فايل htm قرار دادين و قصد داريد از طريق بارگذاري فايل htm تو mmb فايل عكسي كه تو شي htm هست رو هم نمايش بديد.

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

اگه منظورتون رو درست متوجه شده باشم، باز هم همون پاسخ اول پاسخ من هستش. يعني آدرس مربوط به عكس شما كامل نيست.

بعنوان مثال شما تو ديتابيس آدرس newfolder\myfile.jpg رو ثبت كرديد و بعد اين آدرس رو به فايل htm ارسال ميكنيد تا تصوير موردنظر رو نمايش بده. در صورتي كه اين آدرس اشتباهه.

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

پيشنهاد ميكنم آدرسي رو كه از ديتابيستون مي خونيد يعني همون newfolder\myfile.jpg رو با آدرس محل برنامه جمع كنيد تا آدرس كامل تصوير شما بدست بياد كد زير رو ببينيد:

(فرض ميكنيم آدرسي كه از ديتابيس شما بدست اومده تو متغير $address ذخيره شده)

کد:
x$ = '<SrcDir>\\' + address$
الان مقداري كه تو $x قرار داره آدرس كامل فايل عكس شماست. مثلا اگه برنامه شما تو درايو C پوشه sample باشه با اجراي اين كد مقدار متغير $x معادل C:\sample\newfolder\myfile.jpg خواهد شد كه اين همون آدرس تصوير شماست.

حالا شما ميتونيد مقدار $x رو به فايل htm ارسال كنيد تا تصويرتون رو نمايش بده.

نميدونم تونستم منظورم رو برسونم يا نه !!!
 

ASANWEB

Member
آخه html نمیتونه یک متغیر رو ترجمه کنه که !
اصلا یک کار دیگه میکنیم من یک مثال آماده کردم شما اگر براتون امکان داره کاری کنید که عکس رو نشون بده
ممنون
 

پیوست ها

  • sample.rar
    4.1 کیلوبایت · بازدیدها: 9

evil_gates

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

در ضمن من نگفتم مقدار متغير رو به Browser ارسال كنيد. شما بايد مقدار اين متغير رو با دستورات html جمع كنيد و نتيجه رو با StrToLine به خط مربوطه تو فايل htm تون ارسال كنيد. بعد فايل htm رو تو شي HTML بيلدر بارگذاري كنيد تا تصويرتون همراه با فايل htm نمايش داده بشه.
 

ASANWEB

Member
دوست عزيز
متاسفانه فعلا دسترسي ندارم تا نمونه شما رو ببينم يا اصلاح كنم.

در ضمن من نگفتم مقدار متغير رو به Browser ارسال كنيد. شما بايد مقدار اين متغير رو با دستورات html جمع كنيد و نتيجه رو با StrToLine به خط مربوطه تو فايل htm تون ارسال كنيد. بعد فايل htm رو تو شي HTML بيلدر بارگذاري كنيد تا تصويرتون همراه با فايل htm نمايش داده بشه.
بله این در صورتی میشه که من تو دیتابیس یک رکورد مخصوص آدرس داشته باشم ولی رکورد من متن و عکس قاطیه و کد html هست و چجوری میون اون همه کد آدرس عکس رو select کنم؟
 
آخرین ویرایش:

evil_gates

اين نيز بگذرد ...
دوست عزيز
من فقط فايل html شما رو ميتونم ببينم

لطفا اين كد رو تو برنامتون قرار بديد و تست كنيد:

کد:
db_address$ = 'pic/pic.jpg'
pic_path$ = '<SrcDir>\\' + db_address$
str$ = '<html> matn<p> <img border="0" src="' + pic_path$ + '" ></p> </html> '
file$ = '<SrcDir>\matn.html'
retval = StrToLine(file$,str$,1,TRUE)
Browser("Browser","file$")
تو كد بالا فرض بر اين بوده كه مقدار $db_path همون آدرس عكس شماست كه از تو ديتابيستون خونده شده.

مقدار $pic_path همون محلي كه برنامتون قرار داره و ادرس فايل عكس بهش اضافه ميشه تا آدرس كامل بدست بياد

مقدار $str همون رشته از فايل htm شماست كه قراره آدرس عكس رو بگيره و نمايش بده.

دستورات بعدي هم كه مشخصه
 

ASANWEB

Member
دوست عزيز
من فقط فايل html شما رو ميتونم ببينم

لطفا اين كد رو تو برنامتون قرار بديد و تست كنيد:

کد:
[COLOR=red]db_address$ = 'pic/pic.jpg'[/COLOR]
pic_path$ = '<SrcDir>\\' + db_address$
str$ = '<html> matn<p> <img border="0" src="' + pic_path$ + '" ></p> </html> '
file$ = '<SrcDir>\matn.html'
retval = StrToLine(file$,str$,1,TRUE)
Browser("Browser","file$")
تو كد بالا فرض بر اين بوده كه مقدار $db_path همون آدرس عكس شماست كه از تو ديتابيستون خونده شده.

مقدار $pic_path همون محلي كه برنامتون قرار داره و ادرس فايل عكس بهش اضافه ميشه تا آدرس كامل بدست بياد

مقدار $str همون رشته از فايل htm شماست كه قراره آدرس عكس رو بگيره و نمايش بده.

دستورات بعدي هم كه مشخصه

آره نین راه رو فهمیدم و سریع پست قبلیمو ویرایش کردم و گفتم واسه متغیر db_address$ چجوری میتونم فقط آدرس عکس رو از یک رکورد بکشم بیرون و مساوی با متغیر قرار بدم تازه اگر دو تا عکس هم یخوام بزارم اون موقع چی؟
 

evil_gates

اين نيز بگذرد ...
دوست عزيز

اول اينكه بايد با كدهاي html آشنا باشيد.

بعد هم اينكه ميتونيد با استفاده از تابع Pos و يك حلقه خط به خط فايل htm رو مرور كنيد و هرجا كه شرطتون صحيح شد (يعني خطي كه مقدار متغير با آدرس تصوير شما برابر بود ) رو ويرايش كنيد و آدرس كامل عكس رو به اون خط ارسال كنيد.

لطفا نگيد مثال بزارم چون مجبور دوباره متذكر بشم كه تو سفرم و دسترسي ندارم براي ساختن مثال :دي

به بزرگواري خودتون ببخشيد و به همين توضيحات نصفه و نيمه قناعت كنيد :wink:
 

ASANWEB

Member
دوست عزيز

اول اينكه بايد با كدهاي html آشنا باشيد.

بعد هم اينكه ميتونيد با استفاده از تابع pos و يك حلقه خط به خط فايل htm رو مرور كنيد و هرجا كه شرطتون صحيح شد (يعني خطي كه مقدار متغير با آدرس تصوير شما برابر بود ) رو ويرايش كنيد و آدرس كامل عكس رو به اون خط ارسال كنيد.

لطفا نگيد مثال بزارم چون مجبور دوباره متذكر بشم كه تو سفرم و دسترسي ندارم براي ساختن مثال :دي

به بزرگواري خودتون ببخشيد و به همين توضيحات نصفه و نيمه قناعت كنيد :wink:

ای وای واسه یه تغییر آدرس این همه راه باید برم ؟! یعنی راه ساده ای واسه تغییر آدرس وجود نداره؟؟
 

evil_gates

اين نيز بگذرد ...
براي اينكه آدرس درايو 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
 

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

بالا