![]() |
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:
An der Stelle wo ich das 'hallo' übergeben möchte hakt es,
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; wie übergebe ich ein array an eine Funktion? Gruß Sebastian (PS: ich weiß es geht einfacher mit pchar oder string) |
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; |
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; |
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?
|
Re: Array of char an Funktion übergeben
Zitat:
Ich hatte aber auch gedacht, dass man das mit Typen machen muss :gruebel:
Delphi-Quellcode:
[Edit] Code formatiert
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; |
Re: Array of char an Funktion übergeben
Zitat:
|
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:
Jetzt kommt eine Fehlermeldung das die
a:=Stringgrid1.Cells[0,1];
Typen nicht miteinander übereinstimmen. "[Pascal Fehler] Messwerte.pas(62): E2010 Inkompatible Typen: 'TMyArray' und 'string'" |
Re: Array of char an Funktion übergeben
Zitat:
|
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 |
Re: Array of char an Funktion übergeben
Versuch mal
Delphi-Quellcode:
a[0] := Stringgrid1.Cells[0, 1];
|
Re: Array of char an Funktion übergeben
Im Zweifel kannst du PChar nehmen. Wie sieht denn die Deklaration in C aus?
|
Re: Array of char an Funktion übergeben
Delphi-Quellcode:
gibt die Fehlermeldung:
a[0]:=Stringgrid1.Cells[0,1];
Inkompatible Typen "Char" und "string" Die C-Funktion erwartet als Parameter ein "array of char". |
Re: Array of char an Funktion übergeben
Wie ist das notiert?
|
Re: Array of char an Funktion übergeben
Zitat:
|
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; |
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.
|
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;
|
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 14:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz