Как новые строковые типы работают в Delphi 2009/2010?

Это - то, что я использовал для Excel 2003:

Dictionary<string, string> props = new Dictionary<string, string>();
props["Provider"] = "Microsoft.Jet.OLEDB.4.0";
props["Data Source"] = repFile;
props["Extended Properties"] = "Excel 8.0";

StringBuilder sb = new StringBuilder();
foreach (KeyValuePair<string, string> prop in props)
{
    sb.Append(prop.Key);
    sb.Append('=');
    sb.Append(prop.Value);
    sb.Append(';');
}
string properties = sb.ToString();

using (OleDbConnection conn = new OleDbConnection(properties))
{
    conn.Open();
    DataSet ds = new DataSet();
    string columns = String.Join(",", columnNames.ToArray());
    using (OleDbDataAdapter da = new OleDbDataAdapter(
        "SELECT " + columns + " FROM [" + worksheet + "$]", conn))
    {
        DataTable dt = new DataTable(tableName);
        da.Fill(dt);
        ds.Tables.Add(dt);
    }
}
7
задан Daniel Rikowski 9 September 2009 в 12:52
поделиться

4 ответа

Xcode может настраивать раскраску синтаксиса, вам нужны два файла

  • pbfilespec : указывает тип MIME, расширение и некоторую метаинформацию
  • xclangspec : содержит идентификаторы и т. Д. . которые нужно раскрасить

и поместить их где-нибудь в ~ / Library / Application Support / ..

Я сам пользуюсь Textmate, поэтому не знаю, существует ли такая вещь для Ruby, и ни то, ни другое более точная спецификация для этих файлов, но можно легко найти примеры для других языков.

RawByteString (AnsiString с CodePage $ ffff)
  • Типы строк: UTF8String (AnsiString с CodePage 65001)
  • String <-> Преобразования PChar: Основы PChar
  • String <-> PChar преобразования: Возвращение локальной переменной PChar
  • String <-> Преобразования в PChar: Передача локальной переменной как PChar
  • Надеюсь, это поможет вам. Если нет, напишите мне, и я постараюсь расширить ответ здесь.

    8
    ответ дан 6 December 2019 в 10:02
    поделиться

    См. Delphi и Unicode , технический документ, написанный Марко Канто, и я полагаю Абсолютный минимум, который каждый разработчик программного обеспечения должен абсолютно точно знать о Unicode и наборах символов (без оправданий!) , написано Джоэлом.

    Одна из ловушек заключается в том, что вызов Win32 API по умолчанию был привязан к использованию Версия W (широкая строка) вместо версии A (ANSI), например ShellExecuteA . Если ваш код выполняет сложный код указателя, предполагая внутреннюю структуру AnsiString , он сломается. Резервный вариант - заменить PChar на PAnsiChar , Char на AnsiChar , строку на AnsiString и добавьте A в конце вызова Win32 API для этой части кода. После того, как код действительно компилируется и работает нормально,

    11
    ответ дан 6 December 2019 в 10:02
    поделиться

    Обратите внимание, что это не только соответствует реальному строковому коду. Он также попадает в код, в котором PCHAR используется для обхода буферов или взаимодействия с API.

    Например, код инициализации заголовков, которые динамически загружают DLL (getprocedureaddress / loadlibray)

    0
    ответ дан 6 December 2019 в 10:02
    поделиться

    Кажется, почти все мои проблемы возникают из-за автоматического преобразования назначений в UTF8String .

    У меня уже был старый код, использующий UTF8String , чтобы помочь мне подумать, какой тип строки должна содержать переменная.

    При переносе приложения я заменил AnsiString на UTF8String по той же причине, но код зависел от того, что UTF8String было просто псевдонимом для ( classic) AnsiString

    Теперь с автоматическим преобразованием это предположение больше не верно, что создало много проблем.

    Будьте осторожны, если вы используете UTF8String при переносе с кода Delphi до 2009 года!

    0
    ответ дан 6 December 2019 в 10:02
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: