AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Array of char an Funktion übergeben

Ein Thema von S20000 · begonnen am 27. Jun 2008 · letzter Beitrag vom 30. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
S20000

Registriert seit: 22. Apr 2008
84 Beiträge
 
#1

Array of char an Funktion übergeben

  Alt 27. Jun 2008, 17:09
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='hallothen
  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)
  Mit Zitat antworten Zitat
Thorben_Ko

Registriert seit: 8. Jun 2007
86 Beiträge
 
#2

Re: Array of char an Funktion übergeben

  Alt 27. Jun 2008, 17:13
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;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Array of char an Funktion übergeben

  Alt 27. Jun 2008, 17:14
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]='hallothen
  showmessage('funktioniert')
  else
  showmessage('funk. nicht');
end;
Markus Kinzler
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Array of char an Funktion übergeben

  Alt 27. Jun 2008, 17:29
Ein offener Array-Parameter kann nicht mit Call-By-Reference übergeben werden. Bist du dir sicher, dass du nicht einfach einen String haben willst?
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von bigben37
bigben37

Registriert seit: 19. Dez 2007
Ort: Freiburg
116 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Array of char an Funktion übergeben

  Alt 27. Jun 2008, 17:35
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

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

implementation

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

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

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Array of char an Funktion übergeben

  Alt 27. Jun 2008, 17:40
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'])).
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
S20000

Registriert seit: 22. Apr 2008
84 Beiträge
 
#7

Re: Array of char an Funktion übergeben

  Alt 27. Jun 2008, 17:59
OK, das hab ich jetzt verstanden.
Jetzt kommt mein zweites Problem.
Ich möchte diesem array of char jetzt
folgendes zuordnen:

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'"
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Array of char an Funktion übergeben

  Alt 27. Jun 2008, 18:00
Zitat:
Bist du dir sicher, dass du nicht einfach einen String haben willst?
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
S20000

Registriert seit: 22. Apr 2008
84 Beiträge
 
#9

Re: Array of char an Funktion übergeben

  Alt 28. Jun 2008, 14:49
Hallo,

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

Gruß
Sebastian
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Array of char an Funktion übergeben

  Alt 28. Jun 2008, 14:51
Versuch mal
a[0] := Stringgrid1.Cells[0, 1];
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:51 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