![]() |
Array Rückgabewert Funktion
Hallo, ich habe einen dynamischen globalen Array c, dessen Ordnung vertauscht werden soll. Die erste Stelle wird die letzte etc. Da ich jedoch mehrere Arrays vertauschen muss, wollte ich eine Funktion schreiben.
Delphi-Quellcode:
c : Array of Integer
Delphi-Quellcode:
type
function_array = array of Integer; //return value to change the order of an array function changearrayorder(input_array : function_array) : function_array; var tmp_array : Array of Integer; tmp_int : integer; tmp_int_t : integer; begin setlength(tmp_array,high(input_array)); tmp_int_t := high(input_array); for tmp_int := 0 to high(input_array) do begin tmp_array[tmp_int] := input_array[tmp_int]; end; for tmp_int := 0 to high(input_array) do begin input_array[tmp_int_t] := tmp_array[tmp_int]; dec(tmp_int_t); end; result := input_array; end;
Delphi-Quellcode:
Ich habe jedoch einen inkompatiblen Typen zwischen einem Array und meinem function_array; verständlich. Wenn ich jedoch meinem Array "c" auch den Datentyp function_array gebe stürtzt mein Programm ab. Eine weiter Frage ist, ob ich meinen Array c einfach so mit dem Result der Funktion überschreiben kann(beide haben die gleiche länge) oder ob ich jede Stelle des Arrays aufrufen und ersetzen muss. c := changearrayorder(c); Wie kann ich nun diese Funktion verbessern, damit es klappt? Danke! |
AW: Array Rückgabewert Funktion
Warum machst du nicht einfach einen var-Parameter und verzichtest ganz auf den Rückgabewert?
|
AW: Array Rückgabewert Funktion
Auch und vorallem bei VAR müssen die Typen komatibel sein, bzw. sie müssen dort sogar identisch.
Also warum machst du die dann nicht kompatibel, wenn du schon bemerkst, daß sie es nunmal sein müssen?
Delphi-Quellcode:
PS:
var
c : function_array; ![]() |
AW: Array Rückgabewert Funktion
Zitat:
Delphi-Quellcode:
Procedure MyMethod (var a : Array of integer);
var i : Integer; begin for i:= low(a) to high(a) do ... end; var a : Array [0..3] of integer; b : Array Of Integer; begin setLength(b,10); MyMethod(a); MyMethod(b); ... |
AW: Array Rückgabewert Funktion
Aber nicht, wenn du das als VAR-Parameter übergeben wolltest.
Oder seit wann geht da denn Var, wo doch das Open-Array ein ganz anderes Datenformat besitzt. :gruebel: |
AW: Array Rückgabewert Funktion
Ich hätte mal ne frage Wie kann ich ein Array result wieder auslesen?
Delphi-Quellcode:
und jetzt möchte ich gerne die werte wieder auslesen die ich in der Result bekomme
type
Tintegerarray = array of integer; function bedingung: Tintegerarray; SetLength(result,6); Result[0] := Generierer[0] + Generierer[1]; //A2 + A1 = C1 Result[1] := Generierer[2] + Generierer[0]; //B1 + A1 = C2 Result[2] := Generierer[1] + Generierer[3]; //A2 + B2 = D1 Result[3] := Generierer[2] + Generierer[3]; //B1 + B2 = D2 Result[4] := Result[0]+Result[2]; //engergebnis
Delphi-Quellcode:
habe nur bei dem hier immer einen stack overflow
procedure TForm1.Button1Click(Sender: TObject);
__________________________________________________________________________________________________________________ var rec: Integerarray; begin Edit1.Text := InttoStr(rec[1]); end; |
AW: Array Rückgabewert Funktion
Dein rec enthält ja keine Elemente, da es keine Funktionsrückgabe ist.
P.S.: Verwende doch bitte künftig Delphi-Tags (die Helm"-Schaltfläche im Beiragseditor), dann ist der Code viel besser zu lesen. |
AW: Array Rückgabewert Funktion
Einmal der gesamte code sorry ich weiß aber nicht wie du das meinst damit daskein funktionsaufruf da ist ich weiß auch nicht wo ich die am besten aufrufen kann ein boolean ist ja in der if einen int weiß ich auch wie ich den am besten aufrufen kann nur ich weiß nicht wie ich das hin bekomm das array da raus zu ziehen
Delphi-Quellcode:
danke schon mal im vorraus :thumb:
function bedingung: Tintegerarray;
var max, min: integer; counter: integer; Generierer: array[0..4] of integer; begin max := 250; min := 1; for counter := 0 to 3 do begin Generierer[counter] := trunc(random(max))+min; end; SetLength(result,6); Result[0] := Generierer[0] + Generierer[1]; //A2 + A1 = C1 Result[1] := Generierer[2] + Generierer[0]; //B1 + A1 = C2 Result[2] := Generierer[1] + Generierer[3]; //A2 + B2 = D1 Result[3] := Generierer[2] + Generierer[3]; //B1 + B2 = D2 Result[4] := Result[0]+Result[2]; //engergebnis if (Result[4] = Result[0] + Result[2]) and (Result[4] = Result[1] + Result[3]) then Result[4] := Result[1]+Result[3] else ShowMessage('Die Zahlen stimmen nicht '); end; procedure TForm1.Button1Click(Sender: TObject); var rec: Integerarray ; begin bedingung; Edit1.Text := InttoStr(rec[1]); end; procedure TForm1.FormCreate(Sender: TObject); begin Randomize; end; |
AW: Array Rückgabewert Funktion
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var rec: Integerarray ; begin rec := bedingung; //Zuweisung nicht vergessen!! Edit1.Text := InttoStr(rec[1]); end; |
AW: Array Rückgabewert Funktion
Delphi-Quellcode:
daher:
procedure TForm1.Button1Click(Sender: TObject);
var rec: Integerarray ; begin bedingung; // Die Funktion wurde aufgerufen aber das rec nicht befüllt Edit1.Text := InttoStr(rec[1]); end;
Delphi-Quellcode:
Edit:
procedure TForm1.Button1Click(Sender: TObject);
var rec: Integerarray ; begin rec := bedingung; Edit1.Text := InttoStr(rec[1]); end; war zu langsam, damit sorry für den "fast" doppelpost ^^ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:40 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 by Thomas Breitkreuz