Это - альтернативный путь (DataReader быстрее, чем этот):
string s = "";
SqlConnection conn = new SqlConnection("Server=192.168.1.1;Database=master;Connect Timeout=30;User ID=foobar;Password=raboof;");
SqlDataAdapter da = new SqlDataAdapter("SELECT TOP 5 name, dbid FROM sysdatabases", conn);
DataTable dt = new DataTable();
da.Fill(dt);
for (int i = 0; i < dt.Rows.Count; i++)
{
s += dt.Rows[i]["name"].ToString() + " -- " + dt.Rows[i]["dbid"].ToString() + "\n";
}
MessageBox.Show(s);
По крайней мере, с Delphi 2007 должна быть записана временная метка компоновщика в PE-заголовке. SVN View
Очевидным выбором может быть использование даты последнего изменения для exe, но это можно изменить.
Вы можете включить метку времени компиляции в информацию о версии и прочитать этот ресурс. Кажется, я припоминаю надстройку IDE, которая делает это за вас, но не какую.
Или вы можете прочитать временную метку из заголовка PE .
Я также использую временную метку заголовка PE. Проблема заключалась в том (по крайней мере, в более старых версиях), что Delphi не обновляла его правильно. Я не уверен, было ли это исправлено в Delphi 2010. Я написал плагин IDE для автоматического обновления заголовка PE после каждой компиляции. Вы можете получить его на CodeCentral: 19823 Обновить значение TimeDateStamp PE-заголовка после компиляции .
Мы написали подключаемый модуль IDE для автоматического обновления заголовка PE после каждой компиляции. Вы можете получить его в CodeCentral: 19823 Обновить значение TimeDateStamp PE-заголовка после компиляции . Мы написали подключаемый модуль IDE для автоматического обновления заголовка PE после каждой компиляции. Вы можете получить его на CodeCentral: 19823 Обновить значение TimeDateStamp PE-заголовка после компиляции .Я использую простую надстройку IDE, которую я написал для просмотра всех исходных файлов в проекте и записи файла .INC, содержащего последнее время модификации. Это выполняется автоматически как действие «перед компиляцией». Я считаю это более полезным, чем простая дата «последней компиляции», потому что она более точно отражает время последнего изменения проекта. А поскольку все проекты в наших приложениях компилируются в FinalBuilder для каждой сборки, время «последней компиляции» приведет к множеству похожих временных меток, что не представляет особого интереса. Единственным недостатком является то, что этот механизм не записывает изменения в нашей библиотеке служебных функций, которые не являются частью какого-либо проекта; но они меняются не очень часто. Однако, если вам действительно нужна только дата компиляции, это может сделать аналогичная надстройка IDE.