Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Array einer procedure o. function übergeben
Niko S. - Fr 16.01.09 14:48
Titel: Array einer procedure o. function übergeben
Ich versuche einer Procedure eine array zu übergeben nur so damit die procedure da was reinschreiben kann .
Aber irgendwie funktioniert das nicht sobald ich in der procedure der array einen Wert zuweisen will bekomm ich nen
Stack überlauf fehler...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| type TMyItem = array[0..999999] of array[0..21] of String; ... var Form1: TForm1; MyItems: TMyItem;
...
procedure TForm1.LoadDB(db: TStringList; MyItem2: TMyItem); var i,q,id: Integer; str: String; begin for i := 0 to db.Count - 1 do begin if (Pos('//',db.Strings[i]) = 0) AND (db.Strings[i] <> '') then begin str := db.Strings[i]; id := StrToInt(Copy(str,0,Pos(',',str)-1)); Myitem2[id,1] := IntToStr(id); for q := 1 to 18 do begin str := Copy(str,Pos(',',str)+1,length(str)); Myitem2[id,q] := Copy(str,0,Pos(',',str)-1); end; end; end; end;
... |
Moderiert von
Narses: Topic aus Sonstiges (Delphi) verschoben am Sa 17.01.2009 um 12:16
Xentar - Fr 16.01.09 14:52
Übergib das Ding als var oder const Parameter, dann wird nur ein Pointer auf das eigentliche Array übergeben.
Narses - Sa 17.01.09 13:15
Moin!
Niko S. hat folgendes geschrieben : |
| Ich versuche einer Procedure eine array zu übergeben nur so damit die procedure da was reinschreiben kann . |
Xentar hat folgendes geschrieben : |
| Übergib das Ding als var oder const Parameter, |
Dann wollen wir im Interesse eines vernünftigen Programmierstils doch mal die von dir genannte Alternative unter den Tisch fallen lassen... 8) ;)
cu
Narses
Hidden - Sa 17.01.09 13:31
Titel: Re: Array einer procedure o. function übergeben
Niko S. hat folgendes geschrieben : |
| array[0..999999] of array[0..21] |
Ohne jetzt den Rest gelesen zu haben: Wahrscheinlich der falsche Ansatz ;) Schonmal was von
DYNAMISCHEN ARRAYS gehört?
mfG,
MSCH - Sa 17.01.09 13:42
999999 * 21 Byte = 20999979 Bytes = 201922 KB = 197 MB
hmmm, das Programm ist nicht grd speicherschonend. Ein echt dicker Brocken...
*Grins*
Msch
Niko S. - Sa 17.01.09 13:45
Ja das ist mir durchaus bewusst ... das wird auch noch gefixt =) das hat ja soweit alles hingehauen nur wie man aus dem anderen topic entnehmen kann die ganze sache in eine DLL zu bringen nicht wirklich!
Es wäre ja auch nicht schlimm aber ich weiß das ich die funktion noch in mindestens einem anderen Programm nutzen werde und da haette es sich halt angeboten das ganze in eine dll zu verpacken!
Hidden - Sa 17.01.09 14:18
Hi :)
Könntest du evtl. einen Edit machen und das genannte Topic im Erstpost verlinken? Ansonsten ist das jetzt natürlich eine andere Frage und gehört wahrscheinlich in das Topic ;)
Wozu brauchst du denn so große, statische Arrays(Im Arbeitsspeicher!) täte(n) es nicht eine oder mehrere Dateien auf der Festplatte, oder muss auf das gesammte Array ständig zugegriffen werden?
mfG,
Narses - Sa 17.01.09 14:25
Moin!
Die Frage nach dem Sinn eines großen Arrays im RAM wollen wir aber doch nicht mehr hier diskutieren, OK? ;) Dafür böte sich ein frisches neues Topic doch viel besser an... :)
cu
Narses
Niko S. - Sa 17.01.09 14:29
ich habe mich wie ich grad sehe um eine 9 vertippt x(
Davon mal abgesehen ist das erstmal nur sporadisch um das ganze zu testen wie gesagt das was ich hier in dem topic frage ist nun geklärt was mich noch bedrückt ist in diesem topic:
http://www.delphi-forum.de/viewtopic.php?t=89441
Thx ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!