2012-01-19 10 views
8

लिखने का प्रयास करते समय IFF फ़ाइल लिखने के लिए EA iffw.c library का उपयोग करने का प्रयास कर रहा हूं, तो मैं StartWGroup() कॉल को पिछले नहीं प्राप्त कर सकता। यह IFFWriteBytes() में विफल रहता है क्योंकि संदर्भ-> ckHdr.ckSize शून्य है। IFFWriteBytes() के अंदर एक if() है जो उस (आकार) की जांच करता है! = SzNotYetKnown। (szNotYetKnown स्थिर है।) example इंगित करता है कि यह काम करना चाहिए, लेकिन मैं नहीं देख सकता कि कैसे। IFFWriteBytes() CLIENT_ERROR लौटाता है क्योंकि nBytes 4 है - मैं 32 बिट int को सहेजने की कोशिश कर रहा हूं।iffw लाइब्रेरी में त्रुटि प्राप्त करें जब chunk

मेरे नाकाम रहने कोड:

outfp = fopen(outfile, "wb"); 

ifferr = OpenWIFF(outfp, &filec, szNotYetKnown); 

if (ifferr) { 
    return 2; 
} 

ifferr = StartWGroup(&filec, LIST, sizeof (ID_NATAMI_FLASH), ID_NATAMI_FLASH, &listc); 

if (ifferr) { 
    printf("ifferr: %d\n", ifferr); 
    return 3; 
} 

पिछले विफल रहता है, StartWGroup()।

आईएफएफ एक्सएमएल की तरह है, इतना आसान है कि मैं इसे पुस्तकालय के बिना उत्पन्न कर सकता हूं, लेकिन एक बार आम और अच्छी तरह से परीक्षण लाइब्रेरी का उपयोग करना अच्छा होगा।

प्रश्न वास्तव में अमीगा के बारे में नहीं है, लेकिन यह फ़ाइल प्रारूप अमिगा पर लोकप्रिय था। वैसे, क्या आप DjVU, RMFF, AIFF, RIFF and many other formats are IFF or slight variations जानते थे?

अद्यतन: easy to read IFF description

+0

यकीन नहीं है कि मुझे काफी मिल गया है। StartWGroup का सुझाव है कि आप एक समूह शुरू कर रहे हैं (जैसे XML तत्व?) जिसे EndWGroup() के साथ "बंद" होना आवश्यक है। ऐसा लगता है कि आप 32 बिट int लिखने के लिए StartWGroup() का उपयोग कर रहे हैं जो "गलत" लगता है - क्या मुझे कुछ याद आ रही है? – John3136

+0

एंडडब्ल्यूग्रुप बंद हो जाता है, जैसा कि आप कहते हैं। लेकिन कार्यक्रम इसके बिना भी बहुत दूर हो रहा है। (EndWGroup भी एक अंत टैग नहीं लिखता है, यह वापस चला जाता है और इसके बजाय खंड लंबाई को अद्यतन करता है। इसलिए ईएएस लाइब्रेरी मूल रूप से अंत टैग लिखने के लिए एक एक्सएमएल जैसी एपीआई बनाता है, जहां वास्तव में कोई अंत टैग नहीं है।) –

+0

यह नहीं है सीपीपी सवाल? Iifw.cpp को iIFw.c. पर लिंक पॉइंट्स – AoeAoe

उत्तर

2

इस विशेष पुस्तकालय के बारे में कुछ भी जानने का दावा नहीं कर रहा है, लेकिन फ़ंक्शन तर्कों को देखकर मुझे लगता है कि आपने StartWGroup में गलत आकार दर्ज किया होगा।

iifw.cpp से: IFFP StartWGroup(GroupContext* parent, int groupType,int groupSize,int subtype, GroupContext * newtmp), StartWGroupgroupSize है की तीसरा तर्क नाम समूह LIST के आकार का संकेत है और उपसमूह आकार sizeof(ID_NATAMI_FLASH)

संबंधित मुद्दे