Блог Александра Божко
Архивы
Рубрики

CodeSite

Иногда, в процессе отладки приложения при работе с наборами данных бывает необходимо отобразить содержимое набора.  Это не всегда просто сделать, особенно, если DataSet формируется динамически в коде программы. Для того, что бы упростить задачу я написал специальную функцию, которая использует систему логгирования CodeSite.

procedure SendDataSet(aDataSet: TDataSet; aFields: TStrings = nil);
var
  I: Integer;+-
  sLogFldType, sLog: string;
  bm: TBookmark;
  bln: Boolean;
begin
  if not aDataSet.Active then
    Exit;

  sLog := '';
  sLogFldType := '';

  for I := 0 to aDataSet.Fields.Count - 1 do
  begin
    if not Assigned(aFields) then
      bln := True
    else
      bln := aFields.IndexOf(aDataSet.Fields[I].FieldName) > -1;

    if bln then
    begin
      sLog := sLog + Format('%s', [aDataSet.Fields[I].FieldName]) + ' | ';
      sLogFldType := sLogFldType + GetEnumName(TypeInfo(TFieldType),
        Ord(aDataSet.Fields[I].DataType)) + ' | ';
    end;
  end;

  CodeSite.SendNote(aDataSet.Name);
  CodeSite.Send('sLog', sLog);
  CodeSite.Send('sLogFldType', sLogFldType);

  bm := aDataSet.GetBookmark;
  aDataSet.DisableControls;

  aDataSet.First;

  while not aDataSet.Eof do
  begin
    sLog := '';
    for I := 0 to aDataSet.Fields.Count - 1 do
    begin
      if not Assigned(aFields) then
      begin
        sLog := sLog + ' | ' + aDataSet.Fields[I].AsString;
      end
      else
      begin
        if aFields.IndexOf(aDataSet.Fields[I].FieldName) > -1 then
          sLog := sLog + ' | ' + aDataSet.Fields[I].AsString;
      end;
    end;

    CodeSite.Send('sLog', sLog);
    aDataSet.Next;
  end;

  try
    if aDataSet.BookmarkValid(bm) then
      aDataSet.GotoBookMark(bm); //
  finally
    aDataSet.FreeBookMark(bm);
    aDataSet.EnableControls;
  end;

end;

Читать далее

Знаете кто такой Рэй Конопка (Ray Konopka)? Те, кто познакомился с Delphi в 90-х наверняка помнят его, прежде всего, по книге “Создание оригинальных компонент в среде Delphi“. Не смотря на то, что издатели пропустили ошибку в названии (в тексте она исправлена), на мой взгляд, это одна из лучших книг по Delphi. Собственно, во многом благодаря ей, я в свое время начал понимать и любить Delphi.

Думаю, многим также известно, что и по сей день Рэй Конопка активно популяризирует Delphi, является партнером Embarcadero и принимает участие во многих мероприятиях. Кроме того, он является президентом компании Raize Software, которая распространяет несколько весьма полезных для Delphi  разработчиков продуктов. Самый известный из них, пожалуй, CodeSite Logging System. Embarcadero редакция данного продукта (CodeSite Express) входит в состав RAD Studio, начиная с версии XE. Лично я стал использовать этот продукт, практически сразу.  Если же вы до сих пор не познакомились с ним, рекомендую прочесть обзор Владислава Баженова.

На самом деле CodeSite Logging System – продукт очень серьезный с очень впечатляющим функционалом. И даже урезанная Embarcadero редакция предоставляет разработчику достаточно возможностей для того, что бы не утруждаться написанием собственной системы логирования.

Те, кто следит за моим блогом, знают, что я занимаюсь разработкой продукта, который массово продается. Как следствие, у нашего продукта есть множество клиентов, в разных точках мира, говорящих на разных языках, использующих разной программного и аппаратное обеспечение. Естественно, периодически у наших клиентов могут возникать проблемы в работе приложения, требующие вмешательства разработчиков. Сегодня я расскажу, как при помощи CodeSite Logging можно существенно облегчить себе жизнь и упростить процесс “отлова” багов на машинах клиентов.

Читать далее

Продукты DevArt
Купить онлайн:



Читай русскоязычные Delphi блоги
Каталог блогов Blogdir.ru
Яндекс.Метрика