| | Re: MPD file loading search order
|
|
(...) Delphi 2005 (9) is part of Borland Developer Studio (BDS) 2005. It also contains C# Builder and Delphi for .net compilers. But I mainly use Delphi for win 32 development. Since BDS 2006 C++ Builder is also included in the suite. But I decided (...) (18 years ago, 26-Jul-06, to lugnet.cad.dev)
|
|
| | Re: MPD file loading search order
|
|
(...) Is Delphi 2005 Delphi (Pascal) only? I've got BDS2006 at work and that contains both Delphi and C++ and C#. Going .NET would make it easy (?) to use a C++ library from Delphi, I think. (18 years ago, 26-Jul-06, to lugnet.cad.dev)
|
|
| | Re: MPD file loading search order
|
|
(...) Thanks for the pointers, I'm working with Delphi 2005 Pro win32 at the moment (LD4DModeler was written in Delphi 6 Pro). So I can't use you're library. But I will certainly take a look at it. I sometimes write stuff in C++, but for a living (...) (18 years ago, 26-Jul-06, to lugnet.cad.dev)
|
|
| | Re: MPD file loading search order
|
|
Lars C. Hassing wrote: [snip detailed explanation] Thanks for the insight of you're L3P ldraw reader routines. (...) If you mean by public, public to all children and not the whole world, this fits perfectly in Anders Isaksson vision. See my reply (...) (18 years ago, 26-Jul-06, to lugnet.cad.dev)
|
|
| | Re: MPD file loading search order
|
|
(...) This is actually very logical. And it fits in the description from the 2000 post pointed to by Lars. So all objects in the mpd are available for recursive children of the main part, being the first place to search. (...) I don't think stuff in (...) (18 years ago, 26-Jul-06, to lugnet.cad.dev)
|
|
| | Re: MPD file loading search order
|
|
(...) That is a two pass algorithm. It's optimised by only searching files that have already appeared but the search in stage II is a second pass. Tim (18 years ago, 26-Jul-06, to lugnet.cad.dev)
|
|
| | Re: MPD file loading search order
|
|
(...) What about the following algorithm (assuming everything is cached): - whenever a file reference is read, search for the file in the cache. if not found, add it as an empty file and flag it as 'incomplete' - whenever a 'file' is seen, search (...) (18 years ago, 26-Jul-06, to lugnet.cad.dev)
|
|
| | Re: MPD file loading search order
|
|
(...) It seems to me that an MPD is functionally equal to a disk folder which has been added to the (beginning of the) search path for parts. No more, no less. If a part is found in the search path it is used, if it is not found it is ignored (with (...) (18 years ago, 26-Jul-06, to lugnet.cad.dev)
|
|
| | Re: MPD file loading search order
|
|
(...) You're right, but Jacob invented the MPD, so I guess I just followed his wish, though I would have preferred the scoping. Also he suggests a way to get scoping anyway: "0 FILE house1/house1.dat" which nicely reflects the storage on the disk. (...) (18 years ago, 26-Jul-06, to lugnet.cad.dev)
|
|
| | Re: MPD file loading search order
|
|
(...) Wow, that's impressive. I'm pretty sure it's accidental, too. (Accidental on my part; your L3P parser was obviously there first.) (...) LDView only has one file open at a time also (unless I'm mis-remembering my implementation), since the (...) (18 years ago, 26-Jul-06, to lugnet.cad.dev)
|
|
| | Re: MPD file loading search order
|
|
(...) You're welcome. (...) I think local scope is the "correct" thing to do as long as local scope means that only files inside an MPD file can access other files inside the MDP file. Files stored external to the MPD shouldn't, in theory, be able (...) (18 years ago, 26-Jul-06, to lugnet.cad.dev)
|
|
| | Re: MPD file loading search order
|
|
(...) I actually consider that to be two-pass, and that's essentially what LDView does. The only extra thing it does is that it checks for 0 PART meta-commands in the first pass, and puts the file data for the sub-files into their own separate (...) (18 years ago, 26-Jul-06, to lugnet.cad.dev)
|
|
| | Re: MPD file loading search order
|
|
(...) Well, if you read all postings on MPD through the last seven years you should be able to piece the correct answer together :-) I believe the L3 parser (used in L3P, L3Lab and "ldglite -l3") reflects that information. > However, I can tell (...) (18 years ago, 25-Jul-06, to lugnet.cad.dev)
|
|
| | Re: MPD file loading search order
|
|
(...) Sorry, you're right every part in the mpd should see any of the other parts. May be Ldraw.org should post a set of 'testcase' files to be used as a reference for programmers. For each file there should be a description of the expected results (...) (18 years ago, 25-Jul-06, to lugnet.cad.dev)
|
|
| | Re: MPD file loading search order
|
|
(...) Is that what I said? I didn't mean to... If an MPD contains main.dat, a.dat, and b.dat, then a.dat should be able to 'see' b.dat. I make heavy use of the MPD format while working on part files. Inside a single MPD, I typically have long chains (...) (18 years ago, 25-Jul-06, to lugnet.cad.dev)
|
|
| | Re: MPD file loading search order
|
|
(...) You can do it in one pass (if you don't count the loading of the file to a stringlist). Wile walking through the file you build you're objectlist with subparts. Afterwards you go recursively through the list of subparts. This way all mpd (...) (18 years ago, 25-Jul-06, to lugnet.cad.dev)
|
|
| | Re: MPD file loading search order
|
|
(...) Snip, very thourho explanation, thanks! (...) I was thinking of doing the local scope approach mentioned by Steve. But maybe I keep it optional realizing I always end up disappointing some people with ether approach. I was planning to create (...) (18 years ago, 25-Jul-06, to lugnet.cad.dev)
|
|
| | Re: MPD file loading search order
|
|
(...) I mentioned in my other (long) post that I don't think that MPD files should be required to have a .mpd extension. However, I'd like to add more here in answer to your specific question. I could be wrong, but I'm almost positive that it is (...) (18 years ago, 25-Jul-06, to lugnet.cad.dev)
|
|
| | Re: MPD file loading search order
|
|
As you have pointed out, the spec is indeed ambiguous. Consequently, there's probably no correct answer as to how things should work. However, I can tell you what I do in LDView, so that you have an idea of how at least one MPD-compatible program (...) (18 years ago, 25-Jul-06, to lugnet.cad.dev, FTX)
|
|
| | Re: MPD file loading search order
|
|
Thanks Tim and Steve, I think I will go with Steve's advise to let only the main part in the mpd see the other parts in the mpd. This will give a much cleaner recursive approach, in which I can easily support sub mpd's. Further more I think I will (...) (18 years ago, 25-Jul-06, to lugnet.cad.dev)
|