PDA

View Full Version : سوال: پیدا کردن دیتا از روی ادرس ان



ma.andishe
یک شنبه 03 آذر 1392, 13:25 عصر
سلام
دوتا فایل دارم که میخواهم از دوتای آنها یکسری اطلاعات استخراج کنم .
اگر فرض کنیم که در یک فایل یک سری دیتا ثبت بشه و در فایل دوم آدرس برخی از دیتا ها ثبت بشه چطور میتونم دیتای متناظر با آدرس رو پیدا کنم ؟

vbhamed
دوشنبه 04 آذر 1392, 07:22 صبح
سلام
درست مثل بانك اطلاعاتي با ثبت يك فيلد Id براي يك ركورد در هر دو فايل
البته نوع فايلهاتون رو نگفتيد و اينكه ديتاها چي هستن و چقدر حجم دارن ولي به نظر فايل هاي دستيابي تصادفي مناسب اينكار هستن
ضمنا همه اينها وقتي هست كه دليل قابل قبولي براي عدم استفاده از بانك اطلاعاتي استاندارد مثل Jet يا Sql داشته باشيد

ma.andishe
پنج شنبه 07 آذر 1392, 13:44 عصر
سلام ممنون از اینکه جواب دادید
ببینید من دوتا فایل دارم که اولی .rfc و دومی ndx هستش
توی اولی فقط نیرویی از یک دستگاه صنعتی در اون ثبت میشه که چون دوتا سنسور داره دوتا ستون برای اون ثبت میشه
توی دومی: اول زمان ثبت نیرو و تعداد نمونه های ثبت شده و آدرس اولین نیرو که از روی تعداد نمونه ها که معمولا 20 تا برای هر ثبت هستش میشه زمان دومی و ادرس دومی رو پیدا کرد
حالا من میخواهم زمان رو از فایل دوم و نیروی متناظر با اون رو از فایل اول واکشی کنم و توی یک نمودار نشون بدم
از دوستان هرکی میتونه کمک کنه

vbhamed
پنج شنبه 07 آذر 1392, 17:40 عصر
سلام
بهتره يك نمونه با چند مورد اطلاعات از هر دو فايل بزاريد

ma.andishe
پنج شنبه 07 آذر 1392, 18:07 عصر
اخر شب ارسال میکنم
هر کار میکنم اپلود نمیشه
ضمنا تشکر از اینکه وقت میزارید

ma.andishe
پنج شنبه 07 آذر 1392, 21:28 عصر
2 تا فایل نمونه

vbhamed
شنبه 09 آذر 1392, 09:31 صبح
سلام
شما بايد اطلاعاتي از اينكه ديتاها به چه شكل و با چه فرمتي تو اين فايلها نوشته شدن داشته باشيد، اينطوري كه نميشه چيزي ازش فهميد، البته به نظر ميرسه در فايل rfc اطلاعات با فرمت هر ركورد، 8 بايتي ذخيره شده باشه اما اينكه اين يك عدد 8 بايتي هست يا مثلا 4 تا عدد Integer دو بايتي رو نميشه فهميد

ma.andishe
شنبه 09 آذر 1392, 10:02 صبح
این کدی هستش که فایل ndx رو تولید کرده میتونی نوع متغیر ها رو ببینی البته با c++ نوشته شده

rahnema1
یک شنبه 10 آذر 1392, 01:26 صبح
سلام
برنامه زیر دو تا آرایه درست می کنه اولیش که اسمش adad هست یک آرایه دو بعدی با دو ستون هست که دو سری داده ها در آن هستند آرایه بعدی هم به نام tarikh که از نوع string است ساعت متناظر با داده هاست اما یک نکته باید بگم برای همه داده ها ساعت ثبت نشده در نتیجه جای اونها خالی گذاشته شده


sFileName = App.Path & "\20130627.RFC"
flen0=FileLen(sFileName)/8-1
dim adad(flen0,1) as integer
n = FreeFile()
Open sFileName For Random Access Read As #n Len=2
for cc=0 To flen0
Get #n,Seek(n), adad(cc,0)
Get #n,Seek(n) , adad(cc,1)
Seek(n,Seek(n)+2)
next
close #n
sFileName = App.Path & "\20130627.NDX"
flen=FileLen(sFileName)/12-1
dim filepos(flen) as long
dim tmparr(3) as byte
dim tarikh(flen0) as string
n = FreeFile()
Open sFileName For Random Access Read As #n Len=1
for cc=0 To flen
Get #n,Seek(n), filepos(cc)
Seek(n,Seek(n)+3)
Get #n,Seek(n), tmparr(0)
Get #n,Seek(n) , tmparr(1)
Get #n,Seek(n) , tmparr(2)
Get #n,Seek(n)+4 , tmparr(3)
tarikh(filepos(cc)/8)=tmparr(1)&":"&tmparr(0)&":"&tmparr(3)&":"&tmparr(2)
next
close #n

ma.andishe
یک شنبه 10 آذر 1392, 07:22 صبح
ممنون که پاسخ دادی
ببین فایل rfc که 4 ستون داره و 2 تا در میون 0 هستند و با 0 ها هم کاری نداریم ام فایل ndx که در واقع تاریخ و تعداد نمونه و ادرس در ان ثبت میشه به این صورت هستش که:
بین 2 تا تاریخ(یعنی داده هایی که تاریخ ندارن) که معمولا تعدادشون 20 تا هستند در واقع 20 نا ادرس هستند که این 20 ادرس مربوط rfc هستش که باید داده رو از اون استخراج کرد
ضمنا نوع داده و خروجی فایل ndx و طول زکورد اون چی هستش
ممنون

rahnema1
یک شنبه 10 آذر 1392, 08:49 صبح
سلام ساختار فایل ndx این جوریه

ma.andishe
یک شنبه 10 آذر 1392, 09:23 صبح
دوست عزیز چطوری ساختار فایل ndx رو استخراج کردی؟
ضمنا توی داکیومنت این برنامه نوشته شده که 20 تا ادرس یعنی 20 تا عدد باید باشه
اگه امکان داره کامل برام توضیح بدی ممنون میشم
نکته دیگه اینکه یه ارایه تاریخ داریم یه ارایه دیتا .کدوم دیتا مربو بک کدوم تارخ هستش چون میخواهم خروجی اون دوتا چارت باشه که هرچارت یک دیتا و یک تاریخ که تاریخ اونه مشترک است

rahnema1
یک شنبه 10 آذر 1392, 12:18 عصر
دوست عزیز خب شما که داکیومنت برنامه رو داشتی حداقل میذاشتی اینجا یا در غیر این صورت از روی اون توضیح می دادی که مساله راحت تر بشه در هر صورت و به هر ترتیبی من از روی برنامه cpp ساختار فایل را فهمیدم اما برنامه خیلی آشفته بود بعضی چیزها در برنامه بسیار مبهم بود که به هر حال مشخص شد اگه بخوام توضیح کامل بدم باید اول سی پلاس پلاس رو واسه شما توضیح بدم فقط بگم این تکه کدها موجب شناخت ساختار فایل میشه


/********* ndx ************/
long indx[3];
long indx[0]=ftell(fpd); //Roll Force Data file position
long indx[1]=tim.l; //get time
long indx[2]=len; //Roll Force data length
fwrite(indx,sizeof(long),3,fpi);
/********* rfc************/
sint force_data[4];
rdforce_wt(0){force_data[ch]=inval.word * 0.18;}
rdforce_wt(1){force_data[ch]=inval.word * 0.18;}
fwrite(force_data,sizeof(int),4,fpd);

در مورد داده ها باز هم توضیح می دم دو تا آرایه داریم یکی tarikh و یکی adad که تعداد سطرهای هر دوتاشون یکیه و تعداد سطرها برابر flen0+1 هست اما tarikh یک ستون داره و adad دو ستون داره یعنی دو سری داده داریم که تاریخشون مشترکه شما tarikh رو محور x و adad رو محور y در نظر بگیر که 2 سری داده داریم
در مورد اینکه 20 تا عدد شمرده می شه ببینید ما اصلا کاری به 20 تا عدد نداریم توی فایل ndx همون وقت که تایم می زنه همون وقت هم آدرس داده موجود در فایل rfc رو هم میزنه من هم همون رو استخراج کردم یعنی تایم و دیگری آدرس که برابره با سطر فایل adad دیگه کاری به اینکه تعدد نمونه 20 تا بوده یا 30 تا بوده نداریم. چون به مقصود خودمون رسیدیم دیگه نیازی نیست تعداد نمونه ها حساب بشه زیرا ما تعداد نمونه ها را برای این می خواستیم تا بدونیم کدوم تارخ با کدوم آدرس مناسبت داره که ما قبلا اون رو پیدا کردیم

ma.andishe
یک شنبه 10 آذر 1392, 12:45 عصر
آخه اسمن داکیومنته و بیشتر توضیحات رو مسؤول مربوطه داده

ma.andishe
چهارشنبه 13 آذر 1392, 15:55 عصر
دوستان یه نگاه به کد بندازید من هر کار میکنم که تاریخ رو درست بخونم نمیشه
قسمت فقط ndx

ma.andishe
دوشنبه 18 آذر 1392, 14:02 عصر
این کدی هستش که از فایل rfc , ndxیک نمودار درست میکنه من این کار رو توی ویبی 6 انجام دادم اما بسیار زمان بر هستش
لطفا منو راهنمایی کنید که این کد چطور این فایلها رو میخونه که زمان خیلی کمتری میبره؟