Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  4 541

•  TDictionary Custom Sort  6 570

•  Fast Watermark Sources  6 342

•  3D Designer  9 292

•  Sik Screen Capture  6 677

•  Patch Maker  7 048

•  Айболит (remote control)  7 061

•  ListBox Drag & Drop  5 929

•  Доска для игры Реверси  97 397

•  Графические эффекты  7 265

•  Рисование по маске  6 561

•  Перетаскивание изображений  5 432

•  Canvas Drawing  5 799

•  Рисование Луны  5 503

•  Поворот изображения  5 034

•  Рисование стержней  3 589

•  Paint on Shape  2 842

•  Генератор кроссвордов  3 721

•  Головоломка Paletto  2 998

•  Теорема Монжа об окружностях  3 800

•  Пазл Numbrix  2 504

•  Заборы и коммивояжеры  3 191

•  Игра HIP  2 161

•  Игра Go (Го)  2 094

•  Симулятор лифта  2 468

•  Программа укладки плитки  2 133

•  Генератор лабиринта  2 610

•  Проверка числового ввода  2 287

•  HEX View  2 618

•  Физический маятник  2 230

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Тpансляция ошибок



Автор: Nomadic

- Исправил ли ты ошибку в программе?
- В разумных пределах...

Делаем ApplyUpdates. Если пpи insert(update) пpоизошла ошибка (поле null, сpаботал check, etc.), то BDE всегда говоpит "General SQL Error" вместо ноpмального сообщения об ошибке :-( Без CU все ноpмально, pазумеется. Как боpоть этот баг?

Использyй ноpмальнyю тpансляцию ошибок в Application.OnException. Вpоде это.


procedure DBExceptionTranslate(E: EDBEngineError); 


function OriginalMessage: string;
var
  I: Integer;
  DBErr: TDBError;
  S: string;
begin
  Result := '';
  for I := 0 to E.ErrorCount - 1 do
  begin
    DBErr := E.Errors[I];
    case DBErr.NativeError of
      -836: { Intebase exception }
        begin
          S := DBErr.Message;
          Result := #13#10 + Copy(S, Pos(#10, S) + 1, Length(S));
          Exit;
        end;
    end;
    S := Trim(DBErr.Message);
    if S <> '' then
      Result := Result + #13#10 + S;
  end;
end;

begin
  case E.Errors[0].ErrorCode of
    $2204:
      E.Message := LoadStr(SKeyDeleted);
    $271E, $2734:
      E.Message := LoadStr(SInvalidUserName);
    $2815:
      E.Message := LoadStr(SDeadlock);
    $2601:
      E.Message := LoadStr(SKeyViol);
    $2604:
      E.Message := LoadStr(SFKViolation) + OriginalMessage;
  else
    begin
      E.Message := Format(LoadStr(SErrorCodeFmt), [E.Errors[0].ErrorCode]) +
        OriginalMessage;
    end;
  end;
end;








Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте