Einzelnen Beitrag anzeigen

delphinub23

Registriert seit: 27. Okt 2010
Ort: Chemnitz
110 Beiträge
 
Delphi XE3 Professional
 
#1

Hilfestellung: arithmetic exception numeric overflow or string truncation

  Alt 28. Okt 2013, 11:14
Datenbank: InterBase • Version: XE3 • Zugriff über: IBConsole
Hallo DPler,

ich habe eine Tabelle:
CREATE TABLE test (TXT VARCHAR(255)); eine externe Funktion in einer dll:
Delphi-Quellcode:
function IB_ExtractBetween(Value, A, B: PAnsiChar): PAnsiChar; cdecl; export;
var
  aPos: Integer;
  bPos: Integer;
  tmpA: string;
  tmpB: string;
  tmpValue: string;
begin
  Result := '';
  tmpA := String(AnsiString(A));
  tmpB := String(AnsiString(B));
  tmpValue := String(Value);

  aPos := Pos(tmpA, tmpValue);
  if aPos > 0 then
  begin
    aPos := aPos + Length(tmpA);
    bPos := PosEx(tmpB, tmpValue, aPos);
    if bPos > 0 then
    begin
      Result := PAnsiChar(AnsiString(Copy(tmpValue, aPos, bPos - aPos)));
    end;
  end;
end;

im interbase wie folg implementiert:

Delphi-Quellcode:
DECLARE EXTERNAL FUNCTION EXTRACTBETWEEN
CSTRING(256) CHARACTER SET NONE, CSTRING(256) CHARACTER SET NONE, CSTRING(256) CHARACTER SET NONE
RETURNS CSTRING(256) CHARACTER SET NONE FREE_IT
ENTRY_POINT 'IB_ExtractBetween' MODULE_NAME 'udf_dwfunc';
und folgenden Aufruf:

SELECT EXTRACTBETWEEN(CAST(LD.AdditionalInfo AS VARCHAR(255)), '[', ']') FROM LogDetail LD WHERE LD.Event_ID = 2
Das SELECT funktioniert. Aber wenn ich es direkt einfügen will, klappts nicht mit dem o.g. Fehler:
Delphi-Quellcode:
insert into test
SELECT EXTRACTBETWEEN(CAST(LD.AdditionalInfo AS VARCHAR(255)), '[', ']') FROM LogDetail LD WHERE LD.Event_ID = 2

Was ist da los?

Geändert von delphinub23 (28. Okt 2013 um 13:12 Uhr)
  Mit Zitat antworten Zitat