سؤال

كنت مجرد ترقيع جميع أنحاء مع الدعوة GetPrivateProfileString و GetPrivateProfileSection في kernel32 من .صافي و صادفت شيئا غريبا أنا لا أفهم.

دعونا نبدأ مع هذا encantation:

    Private Declare Unicode Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringW" ( _
    ByVal lpApplicationName As String, _
    ByVal lpKeyName As String, _
    ByVal lpDefault As String, _
    ByVal lpReturnedString() As Char, _
    ByVal nSize As Int32, _
    ByVal lpFileName As String) As Int32

إذا كنت اجتياز lpApplicationName (القسم) لا lpKeyName و لا lpDefault ، يجب على كل مفاتيح هذا القسم, و في الواقع أنا لا:50 ٪ من الوقت.

إذا كان ini يحتوي على lpApplicationName ابتداء من السطر الأول العازلة عوائد شيء.إذا lpApplicationName احصائيات على السطر الثاني في الملف ، فإنه يتم إرجاع القيم المتوقعة.

في البداية أنا على الرغم من أنه أمر باستخدام W إصدار Unicode في إعلان ، ولكن تغيير تلك يبدو أن ليس لها أي تأثير.

ما أنا في عداد المفقودين ؟

هل كانت مفيدة؟

المحلول

تحقق لمعرفة ما إذا كان الملف الذي فتح له علامة ترتيب البايت (بضع بايت بمناسبة نوع من ترميز النص).

هذه Windows API المكالمات لا يبدو أن جروك ترتيب البايت علامات يسبب لهم أن تفوت القسم الأول (ومن كل شيء يعمل بشكل جيد إذا كان هناك سطر فارغ).

نصائح أخرى

الكلمة الطيبة.تحرير ini في VS.NET هو بالطبع (دوه) إضافة utf-8 بوم.Grrr.فتحه في المفكرة والقيام SaveAs ASCII ينتج النتائج المتوقعة.

واضحة جدا.حتى منفرجة.ساعة أخرى أسفل المرحاض.:-)

وذلك بفضل!-=كريس

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top