Solved

Tryin to call a function

Posted on 2004-08-10
3
202 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
  • 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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Newbie Thread Programming 1 139
Delphi 2 50
tidtcpserver connection lost handle 2 71
Firemonkey android show image from resource ? 1 33
Objective: - This article will help user in how to convert their numeric value become words. How to use 1. You can copy this code in your Unit as function 2. than you can perform your function by type this code The Code   (CODE) The Im…
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…
This tutorial gives a high-level tour of the interface of Marketo (a marketing automation tool to help businesses track and engage prospective customers and drive them to purchase). You will see the main areas including Marketing Activities, Design …
Video by: Mark
This lesson goes over how to construct ordered and unordered lists and how to create hyperlinks.

895 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

Need Help in Real-Time?

Connect with top rated Experts

14 Experts available now in Live!

Get 1:1 Help Now