Solved

Tryin to call a function

Posted on 2004-08-10
3
206 Views
Last Modified: 2010-04-05
Hello,

I have a quick question....  As it is academically related, I am not after answers, just a push in the right direction.  I am studying in isolation though, so any advise would be greatly appreciated!!

Basically, I am trying to do the palindrome thing, and I'm 1/2 way there. I have cleaned the string (removed all non alpha numeric and changed to lowercase), now I am trying to call: procedure reverse(const: string; var T: string);
Which is where I am running into problems.

Here is my code so far:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Variants, Graphics, Controls, Forms,
Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    edtInput: TEdit;
    Palindromes: TMemo;
    SaveDialog1: TSaveDialog;
    Test: TButton;
    procedure TestClick(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  edtInput: TEdit;
  Palindromes: TMemo;

const
  Chars : Set of Char = ['a'..'z','A'..'Z','0'..'9'];

implementation

{$R *.DFM}

function clean(const S: string): string;
var count: Integer;
begin

for count := 0 To Length(s) do
if S[count] in Chars
  then result := result + S[count];

end;

procedure reverse(const S: string; var T: string);

begin
writeln(test);
// yet to write this part
end;

procedure TForm1.TestClick(Sender: TObject);
var result, input : string;

begin

if length(edtInput.Text) = 0 then
showMessage('Please enter text')
else
input := clean(edtInput.Text);
result := lowercase(s);
showmessage(clean(input));

{ tried top call the procedure here as in: input := reverse(edtInput); but it did not work. I am guessing that I am not passing enough parameters somehow, as in it expecting two strings? }

end;

end.
 

Many thanks.

0
Comment
Question by:south_paw
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
3 Comments
 
LVL 6

Accepted Solution

by:
rbohac earned 250 total points
ID: 11767680
two problems in this code

1) S is undefined in your TestClick procedure
2) test is undefined in your reverse procedure

commenting those out allows the code to compile.

You are passing your variable by reference to the reverse function. Instead  the function returning the string, you are passing a pointer to the reverse procedure, so that it can store the value.

To call it do: reverse(edtInput.text,input);

of you can change your reverse procedure to a function:

function reverse(const S: string):String;
begin
Result := 'Reversed String';
end;

and call it like: input := reverse(edtInput.text);
0
 

Author Comment

by:south_paw
ID: 11768272
Thanks rbohac!

I amended it to:

procedure reverse(const S: string; var T: string);
begin

messagebeep(0);

end;

procedure TForm1.TestClick(Sender: TObject);
var input : string;

begin

 if length(edtInput.Text) = 0 then
 showMessage('Please enter text')

 else
 input := clean(edtInput.Text);
 input := lowercase(edtInput.Text);
 showmessage('Cleaned output: ' + clean(input));
 reverse(edtInput.text,input);

end;

end.


The code compiles, and I get the beep at the end. Of interest, I do not have any problems even though S is undefined in my testClick procedure. Wierd.
0
 
LVL 6

Expert Comment

by:rbohac
ID: 11768508
Well actually S is not undefined. By default Delphi initializes a string valiable for you automatically. So actually S = ''
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

Have you ever had your Delphi form/application just hanging while waiting for data to load? This is the article to read if you want to learn some things about adding threads for data loading in the background. First, I'll setup a general applica…
Introduction Raise your hands if you were as upset with FireMonkey as I was when I discovered that there was no TListview.  I use TListView in almost all of my applications I've written, and I was not going to compromise by resorting to TStringGrid…
Come and listen to Percona CEO Peter Zaitsev discuss what’s new in Percona open source software, including Percona Server for MySQL (https://www.percona.com/software/mysql-database/percona-server) and MongoDB (https://www.percona.com/software/mongo-…
Do you want to know how to make a graph with Microsoft Access? First, create a query with the data for the chart. Then make a blank form and add a chart control. This video also shows how to change what data is displayed on the graph as well as form…

690 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