Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi frage zu dynamischen arrays (https://www.delphipraxis.net/24026-frage-zu-dynamischen-arrays.html)

Mart 14. Jun 2004 13:40


frage zu dynamischen arrays
 
Code:
type
  arraytype=array of Integer;

var
  variable1:arraytype;
  variable2:arraytype;
ok wie ich die länge für variable1 und variable2 festlege weiss ich, geht mit setlength(variable,länge), allerdings möchte ich dass alle variablen mit dem typ arraytype auch in proceduren und funktionen die gleiche länge haben, ich möchte nicht bei jeder variable setlength machen müssen, deswegen meine frage geht es irgendwie dass ich die länge von arraytype festlege??
setlength(arraytype,länge) funktioniert nicht, da sagt mir delphi dass ( erwartet wurde aber , gefunden wurde nach arraytype.

die arrays werden von proceduren aus dll an hauptprogramm und im hauptprogramm selber auch übergeben, deswegen musste ich das mit arraytype (ursprünglich arraytype = array [1..25] of Integer;), möchte jetzt aber dynamische arrays nutzen weil die länge der arrays mit aus der dll uebergeben werden soll. also gibt es etwas so wie setlength auch für arraytype???

maximov 14. Jun 2004 13:55

Re: frage zu dynamischen arrays
 
Willkommen hier :-D

Ums kurz zu machen: NEIN geht nicht :( ...macht auch keinen sinn, da man ja dyn. array hat um alle längen anders zu setzen! und ausserdem bräuchte der typ dann ja eine datenbank mit allen array referenzen, um diese dann auf die gewünschte länge zu bringen.

Wenn du so viele arrays hast, dann mach doch array of array und setz alle mit setLength(arr,arrCount,100); auf hundert :wink:

Mart 14. Jun 2004 13:58

Re: frage zu dynamischen arrays
 
naja bei meinem prog würde es schon sinn machen da ich die länge aller arrays ändern will jenachdem was in der dll angegeben ist.
schade dass es net geht, muss ich wohl alles einzelnt machen oder diese option rauslassen :(

Mart 14. Jun 2004 14:39

Re: frage zu dynamischen arrays
 
ich denke es wird ueberhaupt nicht mit dynamischen arrays gehen wenn ich nicht gleich am anfang die größe von dem arraytype festlegen kann, da die übergabe von arrays zwischen dll und programm irgendwie nur funzt wenn in der klammer vonner procedure festgelegt ist wie groß das array ist, ich weiss nicht ob es grundsätzlich so ist oder daran liegt dass die arrays eigentlich aus pointern bestehen...

Code:
type
  StringP=^string;
  arraytype=array of StringP;

procedure beispiel(var variable1:arraytype);
so siehts eigentlich aus... die procedure in der dll kann nur die arrays übergeben wenn ich arraytyp = array [1..25] of StringP;
mache also klar ist wie groß das array ist und es funktioniert auch nur wenn ich das mit arraytype mache, bei
Code:
procedure beispiel(var variable1: array of StringP);
tritt eine Zugriffsverletzung auf bei der Übergabe
und
Code:
procedure beispiel(var variable1:array [1..25] of StringP);
geht nicht weil delphi [1..25] nicht in der klammer haben möchte... muss also wohl festlegen wie groß die arrays sind :(

vielleicht weiss ja jemand wie ich die arrays dynamisch machen kann sie aber dennoch von der dll ans hauptprogramm übergeben kann...

Muetze1 14. Jun 2004 14:51

Re: frage zu dynamischen arrays
 
Moin!

Ich kapier da nix was du uns sagen willst.

Grundlegendes:

1. Ein dynamisches Array ist intern schon ein Array von Zeigern.
2. Du brauchst das Array nicht als Array auf Zeiger auf Strings zu definieren - ist quatsch - siehe 1.
3. Selbst wenn du es so machst, dann musst du auch den Zeiger ordentlich füllen mit Zeiger auf einen String
4. Nein, du kannst bei einer Funktion keine festen Arraygrenzen angeben - aber einen Typ - also gebe doch einfach einen definierten Typ für das dynamische Array an
5. Und du musst bei der Benutzung von Strings (da es AnsiStrings sind) bei der DLL und im Hauptprogramm die ShareMem einbinden, wie es im Kommentar in der DLL steht...

MfG
Muetze1


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:42 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