आपकी लाइब्रेरी यूनिकोड को अवगत नहीं है। बस इसे एक AnsiString पास करने के लिए पर्याप्त नहीं होगा क्योंकि यह शायद डेटा स्टोर करने के लिए आंतरिक रूप से तारों का उपयोग करता है।
आप, कि लाइब्रेरी को अपडेट करने की कोशिश इसे अद्यतन करने के लेखक के लिए प्रतीक्षा, या बस MessageDigest_5.pas इस्तेमाल कर सकते हैं कि डेल्फी 2009 के साथ जहाजों यह स्रोत \ Win32 \ साबुन \ wsdlimporter फ़ोल्डर में है, जिसे आपको या तो अपने पथ में जोड़ना होगा, या स्पष्ट रूप से इसे अपनी परियोजना में शामिल करना होगा।
कुछ नमूने यहां डेल्फी 2009 में इसे प्रयोग कोड है:
uses Types, MessageDigest_5;
procedure TForm16.Edit1Change(Sender: TObject);
var
MD5: IMD5;
begin
MD5 := GetMD5;
MD5.Init;
MD5.Update(TByteDynArray(RawByteString(Edit1.Text)), Length(Edit1.Text));
Edit2.Text := LowerCase(MD5.AsString);
end;
और आप व्यवसाय में हैं:
MD5 (123456) = e10adc3949ba59abbe56e057f20f883e
आप लपेट सकता है यदि आप चाहते थे तो एक साधारण फंक्शन कॉल में। यह महत्वपूर्ण है कि आप के बाद से RawByteString डाली एक TByteDynArray को कास्टिंग से पहले एक RawByteString लिए डाली सभी अतिरिक्त यूनिकोड वर्ण चला जाता है। अनुमोदित अगर संपादन में यूनिकोड वर्ण हैं तो आप खराब डेटा के साथ समाप्त हो सकते हैं।
आदि
मेरी क्रिसमस ध्यान रखें कि GetMD5 एक अंतरफलक लौटने रखें, तो यह संदर्भ में गिना है,!
स्रोत
2008-12-25 11:11:37
यहां पर कास्ट पूरी तरह से फर्जी हैं। आप तर्कसंगत रूप से यूनिकोडस्ट्रिंग को RawByteString पर नहीं डाल सकते हैं। और आप पूरी तरह से बाइट सरणी में RawByteString नहीं डाल सकते हैं।यह उत्तर बहुत बुरी तरह गलत है, और इस तरह गलती से मतदान किया गया कि इसे हटा दिया जाना चाहिए। सही समाधान TEncoding.GetBytes का उपयोग करता है। –