?
Solved

Problem with the ABORT procedure

Posted on 1998-12-09
2
Medium Priority
?
348 Views
Last Modified: 2011-09-20
I was developing apps in Delphi 1.0. I migrated the project
to Delphi 3.0. But I got the compiling error with the following code:

procedure TfCliente.TableBeforeCancel(DataSet: TDataset);

BEGIN
   If MessageDlg('Cancel?', mtConfirmation,
                 [mbYes, mbNo], 0) = mrNo Then
        Abort;
END;

Delphi says "Statement expected, but expression of type 'integer' found."

It's strange because I always used the ABORT procedure to cancel the TTable's Before procedures, but now in Delphi 3.0 it won't compile. I tried to put the ABORT procedure in other codes, it just shows the same error.

In this case will this be Delphi 3.0's bug?
 
0
Comment
Question by:davihongsikchoi
2 Comments
 
LVL 2

Accepted Solution

by:
gallaghe earned 600 total points
ID: 1350091
I think the problem has something to do with either the order of the units USES clause or a unit is missing from the unit.

try using my "Message" unit, (this isolates the call to MessageDlg) add it to the form;s uses clause which is causing the problem. Then use the function called "Question".

Caveat: Each of my routines allow you to do multi-lines in the messages by using a semi-colon rather then #13.

For example:
'This is line 1' + #13 + 'Line 2' ;

My method
'This is line 1;Line 2' ;


Demo call
procedure TfrmMain.Table1BeforeCancel(DataSet: TDataSet);
begin
  if not Question('Cancel?') then
    abort ;
end;

-------------Source code -------------------------
unit kg_MsgDlg ;

interface

uses
  Windows, Messages, Classes, Graphics;

function  Confirmation(const S: String): Word ;
function  Question(const S: String):Boolean ;
procedure Information(const S: String) ;
procedure InformationPos(const S: String;nRow,nCol:Integer) ;
procedure Alert(const S: String) ;
procedure ErrMsg(const S: String) ;
function  RetryBox(const S: String):Boolean ;
function  StrCrLf(const cMsg:String):String ;

implementation

uses SysUtils, Controls, Forms, Consts, Dialogs ;

function StrCrLf(const cMsg:String):String ;
var nLen,i:Integer ;
begin

  nLen := Length(cMsg) ;
  i := 1 ;
  while i <= nLen do begin
    if cMsg[i] in [';','~'] then
      Result := Result + #13
    else
      Result := Result + cMsg[i] ;
    Inc(i) ;
  end ;
end ;

function Confirmation(const S: String): Word ;
begin
  case MessageDlg(StrCrLf(S),mtConfirmation,[mbYes,mbNo,mbCancel],0) of
     IDYES    : Result := mrYes ;
     IDNO     : Result := mrNo ;
     IDCANCEL : Result := mrCancel ;
     else       Result := mrCancel ;
  end
end ;

procedure Alert(const S: String) ;
begin
  MessageDlg(StrCrLf(S),mtWarning,[mbOk],0) ;
end ;

procedure Information(const S: String) ;
begin
  MessageDlg(StrCrLf(S),mtInformation,[mbOk],0) ;
end ;

procedure InformationPos(const S: String;nRow,nCol:Integer) ;
begin
  MessageDlgPos(StrCrLf(S),mtInformation,[mbOk],0,nCol,nRow) ;
end ;

procedure ErrMsg(const S: String) ;
begin
  MessageDlg(StrCrLf(S),mtError,[mbOk],0) ;
end ;

function Question(const S: String):Boolean ;
begin
  case MessageDlg(StrCrLf(S),mtConfirmation,[mbYes,mbNo],0) of
     IDYES    : Result := True ;
     IDNO     : Result := False ;
  else          Result := False ;
  end ;
end ;

function RetryBox(const S: String):Boolean ;
begin
  case MessageDlg(StrCrLf(S),mtConfirmation,[mbRetry,mbNo],0) of
     IDRETRY  : Result := True ;
     IDNO     : Result := False ;
  else          Result := False ;
  end ;
end ;

end.


Kevin S. Gallagher
0
 
LVL 27

Expert Comment

by:kretzschmar
ID: 1350092
hi davihongsikchoi,

are you sure that your codefragment causes your problem? I've checked out and compiled it with D3 without errors.

Or if there a other defined by own Abort procedure? if so use sysutils.abort instead.

meikl
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Hello everybody This Article will show you how to validate number with TEdit control, What's the TEdit control? TEdit is a standard Windows edit control on a form, it allows to user to write, read and copy/paste single line of text. Usua…
Introduction I have seen many questions in this Delphi topic area where queries in threads are needed or suggested. I know bumped into a similar need. This article will address some of the concepts when dealing with a multithreaded delphi database…
There may be issues when you are trying to access Outlook or send & receive emails or due to Outlook crash which leads to corrupt or damaged PST file. To eliminate the corruption from your PST file, you need to repair the corrupt Outlook PST file. U…
Is your organization moving toward a cloud and mobile-first environment? In this transition, your IT department will encounter many challenges, such as navigating how to: Deploy new applications and services to a growing team Accommodate employee…
Suggested Courses

601 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question