Solved

Strings, Pointers, Arrays, and .Text

Posted on 1997-03-12
7
146 Views
Last Modified: 2010-04-04
What is the actual difference between each of these data types and how are they used, and most important, how do I convert between each of them?  Also, which type do I use for passing 'C' type strings to a dll?
0
Comment
Question by:ocurance
  • 7
7 Comments
 
LVL 3

Accepted Solution

by:
mheacock earned 50 total points
ID: 1334772
Object Pascal (Delphi) implements two types of strings, String and PChar.

String is not supported in C.
PChar is.  PChar's are equivalent to char * in C.  In other words, a null-terminated string.

if you have C function like this:

  void SomeFunc(int A, int *B, char *C)

the equivalent in Delphi would be:

  procedure SomeFunc(A: Integer; var B: Integer; C: PChar);

Why use the var you may ask?  Well, in the C call, int *B is requesting that address of the integer B.  It will also let you return a value from the procedure through B.  In Delphi, a var parameter is equivalent.  In most instances, Delphi will pass the actual value to a procedure...by using a var, you are forcing Delphi to pass the address of that value.

That is all a pointer is...an address reference to that actual value.  If you have this Delphi syntax:
 
   var
     B: Integer;
     C: ^Integer;
   begin
     B := 15;
     C := @B;
   end;

B holds an actual value.  That value has to be stored in memory somewhere.  C is an address in memory.  It could be any size space, but when C is dereferenced, it will pull out a number of bytes, starting at its address, equal to the length of an Integer.  The @ symbol means the address of the variable.  Therefore C := @B, means that C now points to the address of B value, 15.  If you dereferenced C, like this:

   lblLabel1.Caption := IntToStr(C^);

the label would now show the value 15.  C^, means go to my address and get me the a value based on the type of pointer I am, in this case a pointer to an integer.

As for converting...there are specific functions to convert between string and pchar.  See the Delphi help file under String Manipulation Routines.

The .Text of most components is of type string, therefore you have to convert most other types to string before you can store a value in a .Text property.  I showed you one above, where we converted an Integer to a String via the IntToStr function.

Hopefully this clears some things up.  Feel free to send more comments.

0
 
LVL 3

Expert Comment

by:mheacock
ID: 1334773
I mistakingly said that the .Text of MOST components is of type string.  I meant to say that the .Text of ALL components, that have a .Text property, is of type string.
0
 
LVL 3

Expert Comment

by:mheacock
ID: 1334774
Did I supply all the information you wanted?  If not, feel free to comment.
0
Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

 
LVL 3

Expert Comment

by:mheacock
ID: 1334775
Did you want to grade this or reject it?
0
 
LVL 3

Expert Comment

by:mheacock
ID: 1334776
Do you think you can grade this now?  Or reject it?
0
 
LVL 3

Expert Comment

by:mheacock
ID: 1334777
Hello??  Anyone there?
0
 
LVL 3

Expert Comment

by:mheacock
ID: 1334778
Did this help?  If you could grade this it would be appreciated.  Thanks.  If you need further assistance, just add a comment and I will answer shortly.
0

Featured Post

Live: Real-Time Solutions, Start Here

Receive instant 1:1 support from technology experts, using our real-time conversation and whiteboard interface. Your first 5 minutes are always free.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Intraweb download file link ? 1 132
Print Graphic and Text to Epson TM-T88v 12 247
How to debug For loops? 3 49
enhance the following code 3 30
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 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…
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

786 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