Einzelnen Beitrag anzeigen

Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#1

Stackoverflow Fehler bei SQL.Active := True

  Alt 8. Jul 2007, 07:05
Datenbank: ADS • Version: 8.x • Zugriff über: SQL, ADSTable, ADSQuery
Hallo DPler,

weis jemand was hier falsch ist?

Delphi-Quellcode:
function TFrmMain.IsPhoneNoValid(aPhoneNumber: String): Boolean;
var
  I: Integer;
  NumCount: Integer;
  DashCount: Integer;
begin
  Result := False;
  NumCount := 0;
  DashCount := 0;
  for I := 1 to Length(aPhoneNumber) do
  begin
    case aPhoneNumber[I] of
      '0'..'9': Inc(NumCount, 1);
      '-': Inc(DashCount, 1);
    end;
  end;
  if ( (NumCount <> 10) and (DashCount <> 2) ) then
  begin
    ShowMessage('Phone number does not match US standard pattern!');
    Result := False;
  end
  else
  begin
    Result := True;
  end;
end;

procedure TFrmMain.PItmAddPhoneClick(Sender: TObject);
var
  PhoneNo: String;
begin
  //Input phone number
  PhoneNo := InputBox('Add Phone Number', 'Please add a valide phone number', '');
  if ( PhoneNo <> '' ) then
  begin
    //Check whether phone number is valid or not
    if ( not IsPhoneNoValid(PhoneNo) ) then
    begin
      Exit;
    end;
    with DBModule.Query do
    begin
      //Check whether phone number is present already or not
      Active := False;
      SQL.Text := 'SELECT COUNT(Phone) AS PhoneCount FROM ComMeth WHERE Phone=' + PhoneNo;
      Active := True; [color=#ff0000]<====== Hier kommt ein StackOverflow Fehler[/color]
      if ( FieldByName('PhoneCount').AsInteger > 0 ) then
      begin
        ShowMessage('This phone number exists already');
        Exit;
      end;
      Active := False;
      SQL.Text := 'INSERT INTO ComMeth (Phone) VALUES (' + PhoneNo + ')';
    end;
  end;
end;
Ich gebe eine Rufnummer im Amerikanischen Format xxx-xxx-xxxx ein. Die Tabelle ist bisher noch leer.
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat