Delphi-PRAXiS
Seite 1 von 2  1 2      

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];


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:00 Uhr.
Seite 1 von 2  1 2      

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