Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Array of char an Funktion übergeben (https://www.delphipraxis.net/116375-array-char-funktion-uebergeben.html)

S20000 27. Jun 2008 16:09


Array of char an Funktion übergeben
 
Hallo zusammen,

ich habe ein kleines Problem.
Ich möchte ein array[0..99] of char an eine Funktion übergeben,
bekomme das aber nicht richtig hin:

Delphi-Quellcode:
var
  a:array[0..99] of char;

implementation

procedure TForm1.Button1Click(Sender: TObject);
begin
a:='hallo';
test[];           //hier hakt es !
end;


procedure test(var st:array of char);
begin
  if st='hallo' then
  showmessage('funktioniert')
  else
  showmessage('funk. nicht');
end;
An der Stelle wo ich das 'hallo' übergeben möchte hakt es,
wie übergebe ich ein array an eine Funktion?

Gruß
Sebastian

(PS: ich weiß es geht einfacher mit pchar oder string)

Thorben_Ko 27. Jun 2008 16:13

Re: Array of char an Funktion übergeben
 
du musst das array als type dekladieren,

Delphi-Quellcode:
type
  TMyArray = array[0..99] of char;
var
  a:TMyArray ;

implementation

procedure TForm1.Button1Click(Sender: TObject);
begin
a:='hallo';
test(a);           //hier hakt es ! 
end;


procedure test(var st :TMyArray );
begin
//Whatever
end;

mkinzler 27. Jun 2008 16:14

Re: Array of char an Funktion übergeben
 
Genauso wie jede andere Variable

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);

begin
a[0]:='hallo';
test(a);    
end;


procedure test(var st:array of char);
begin
  if st[0]='hallo' then
  showmessage('funktioniert')
  else
  showmessage('funk. nicht');
end;

Apollonius 27. Jun 2008 16:29

Re: Array of char an Funktion übergeben
 
Ein offener Array-Parameter kann nicht mit Call-By-Reference übergeben werden. Bist du dir sicher, dass du nicht einfach einen String haben willst?

bigben37 27. Jun 2008 16:35

Re: Array of char an Funktion übergeben
 
Zitat:

Zitat von Apollonius
Ein offener Array-Parameter kann nicht mit Call-By-Reference übergeben werden.

Also bei mir geht das mit der Übergabe von dem Array, wenn dieser vom Typ String ist
Ich hatte aber auch gedacht, dass man das mit Typen machen muss :gruebel:

Delphi-Quellcode:
var
  a:array[0..99] of String;

implementation

procedure test(var st:array of String);
begin
  if st[0]='hallo' then
  showmessage('funktioniert')
  else
  showmessage('funk. nicht');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  a[0]:='hallo';
  test(a);
end;
[Edit] Code formatiert

Apollonius 27. Jun 2008 16:40

Re: Array of char an Funktion übergeben
 
Zitat:

Ich hatte aber auch gedacht, dass man das mit Typen machen muss
Dieses Konzept heißt Open Array Parameter und bewirkt, dass man das Array inline angeben kann (func(['wupp', 'di'])).

S20000 27. Jun 2008 16:59

Re: Array of char an Funktion übergeben
 
OK, das hab ich jetzt verstanden.
Jetzt kommt mein zweites Problem.
Ich möchte diesem array of char jetzt
folgendes zuordnen:

Delphi-Quellcode:
a:=Stringgrid1.Cells[0,1];
Jetzt kommt eine Fehlermeldung das die
Typen nicht miteinander übereinstimmen.

"[Pascal Fehler] Messwerte.pas(62): E2010 Inkompatible Typen: 'TMyArray' und 'string'"

Apollonius 27. Jun 2008 17:00

Re: Array of char an Funktion übergeben
 
Zitat:

Bist du dir sicher, dass du nicht einfach einen String haben willst?

S20000 28. Jun 2008 13:49

Re: Array of char an Funktion übergeben
 
Hallo,

das Problem ist, ich übergebe die Parameter an eine in "C" geschriebene
Funktion. Dann kann ich ja nicht mit string arbeiten...

Gruß
Sebastian

dominikkv 28. Jun 2008 13:51

Re: Array of char an Funktion übergeben
 
Versuch mal
Delphi-Quellcode:
a[0] := Stringgrid1.Cells[0, 1];

Apollonius 28. Jun 2008 13:51

Re: Array of char an Funktion übergeben
 
Im Zweifel kannst du PChar nehmen. Wie sieht denn die Deklaration in C aus?

S20000 28. Jun 2008 14:14

Re: Array of char an Funktion übergeben
 
Delphi-Quellcode:
a[0]:=Stringgrid1.Cells[0,1];
gibt die Fehlermeldung:

Inkompatible Typen "Char" und "string"

Die C-Funktion erwartet als Parameter ein
"array of char".

Apollonius 28. Jun 2008 15:23

Re: Array of char an Funktion übergeben
 
Wie ist das notiert?

pilic 28. Jun 2008 15:43

Re: Array of char an Funktion übergeben
 
Zitat:

Zitat von S20000
Die C-Funktion erwartet als Parameter ein
"array of char".

Und das tut sie vermutlich nur, weil es keine Strings in C gibt.

S20000 30. Jun 2008 07:47

Re: Array of char an Funktion übergeben
 
Hallo,

die C Funktionen habe ich noch nicht. Nur eine
Spezifikation. Eine Funktion wird z.B. so aussehen.
Wie gesagt mit einem Übergabeparameter als array of char
(wegen fehlender strings in C)

function GetInfo(a:integer;b:array of char):boolean;

Medium 30. Jun 2008 11:40

Re: Array of char an Funktion übergeben
 
Wenn keine Länge für das Array angegeben ist, wird ein dynamisches Array erwartet, dass es in C so nicht gibt. Man "simuliert" es über Pointer, womit PChar vermutlich genau dein Kandidat ist.

S20000 30. Jun 2008 12:27

Re: Array of char an Funktion übergeben
 
sorry, die maximale Länge ist gegeben:

Delphi-Quellcode:
function GetInfo(a:integer;b:array[0..99] of char):boolean;

DeddyH 30. Jun 2008 12:29

Re: Array of char an Funktion übergeben
 
Dann leg mal einen eigenen Typ an (ohne Gewähr):
Delphi-Quellcode:
type TDeinArray = array[0..99] of char;

function GetInfo(a:integer;b:TDeinArray):boolean;


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz