Hello
If you scan a opened file, the file must be opened with f =
fopen(fName,"rb+");
and the scanloop is not correct, you should replace
mdlScan_initialize (fileNum, &scanList) by
mdlScan_initOpenedFile (f, &scanList);
the rewst is ok in your program
Regards Olaf
Daniel MacNeil schreef:
> I haven't used mdlScan_initOpenedFile(...) before, but looking at the
> help it says that it ZEROS out the scanlist. It looks like it works the
> same way as mdlScan_initScanlist(...) and should be used in its' place.
> When you use it later in the code you are setting everything back to
> default values.
> In your _do loop_ check what element types are being returned.
>
> Dan
>
>
> grotero@[EMAIL PROTECTED]
wrote:
> > Can anybody tell me what's wrong in this code?
> > It fails when executing the line "mdlElement_extractRange(&vector,
> > &elDP->el);". The error is "Cancelation of MDL in line......."
> > What this function is trying to do is to obtain the yMax (the maximum
> > value "y" of a extern file).
> >
> > Private double calculateYMax
> > (
> > FILE *f
> > )
> > {
> >
> > Scanlist scanList;
> > ULong elemAddr[50], filePos;
> > int fileNum, i, j, numAddr, scanWords, currFile, numPoints;
> > int init_status, scan_status;
> > DPoint3d origin, end;
> > MSElement el;
> > double yMax = 0.0;
> > Dvector3d vector;
> >
> >
> > /*-----------------------------------------------------+
> > | initialize scan to start from begining of file |
> > +-----------------------------------------------------*/
> > mdlScan_initScanlist (&scanList);
> > mdlScan_setDrawnElements(&scanList);
> > mdlScan_noRangeCheck(&scanList);
> >
> > for (i=0; i<4; i++)
> > scanList.levmask[i] = 0x0000;
> >
> > scanList.typmask[0] = TMSK0_LINE|TMSK0_LINE_STRING|TMSK0_SHAPE;
> >
> > scanList.typmask[1] = 0x0000;
> > scanList.typmask[2] = 0x0000;
> > scanList.typmask[3] = 0x0000;
> > scanList.typmask[4] = 0x0000;
> > scanList.typmask[5] = 0x0000;
> > scanList.typmask[6] = 0x0000;
> > scanList.typmask[7] = 0x0000;
> >
> > scanList.scantype = ELEMTYPE;
> > scanList.extendedType = FILEPOS;
> >
> > if (f!=NULL)
> > {
> > mdlScan_initOpenedFile (f, &scanList);
> > }
> > filePos = 0L;
> > fileNum = 0;
> > scanWords = 0;
> >
> > if ((init_status = mdlScan_initialize (fileNum, &scanList)) ==
> > SUCCESS);
> > {
> >
> > do
> > {
> > scan_status = mdlScan_file (elemAddr, &scanWords,
> > sizeof(elemAddr), &filePos);
> > numAddr = scanWords / sizeof(short);
> >
> > for (i=0; i<numAddr; i++)
> > {
> > MSElementDescr *elDP=NULL;
> >
> > mdlWorkDgn_read(&elDP,elemAddr[i],f,NULL,0);
> > mdlElmdscr_read (&elDP, elemAddr[i], f, FALSE, NULL);
> >
> >
> > /* THIS LINE IS THE ONE WHICH IS FAILING */
> > mdlElement_extractRange(&vector, &elDP->el);
> >
> > origin = vector.org; end = vector.end; if
> > (origin.y > yMax)
> > yMax = origin.y; if (end.y > yMax)
> > yMax = end.y;
> > if(elDP) mdlElmdscr_freeAll(&elDP); }
> > } while (scan_status == BUFF_FULL);
> >
> > }
> > return yMax;
> > }
> >
> >
> > Daniel MacNeil wrote:
> >
> >>The only way to see multiple files in the view windows at the same
time
> >>is to use refernce files.
> >>
> >>Dan
> >>
> >>grotero@[EMAIL PROTECTED]
wrote:
> >>
> >>>Is posible to open a new file and work with it while still seing the
> >>>actual one in the workspace?.
> >>>I hope you understand me.
> >>>
> >>>Thanks.
> >>>
> >
> >


|