Solved

Tryin to call a function

Posted on 2004-08-10
3
201 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
Comment Utility
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
Comment Utility
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
Comment Utility
Well actually S is not undefined. By default Delphi initializes a string valiable for you automatically. So actually S = ''
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

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…
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…
This video demonstrates how to create an example email signature rule for a department in a company using CodeTwo Exchange Rules. The signature will be inserted beneath users' latest emails in conversations and will be displayed in users' Sent Items…

743 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

15 Experts available now in Live!

Get 1:1 Help Now