03. april 2003 - 01:21Der er
6 kommentarer og 1 løsning
dynamisk array som result for en function
Hej.
Jeg har en function:
function calcintegral(.......):nvector; var testvector; nvector; begin setlength(testvector,nvalue); ... result:=testvector; end; Hvor nvector = array of double;
Jeg kalder functionen med
integral:=calcintegral(....);
Og får "invalid pointer operation".
Jeg har naturligvis brugt setlength på både integral og testvector. Jeg bruger en masse dynamiske arrays i programmet, og eneste sted jeg får problemer er hvor det er function return type. Jeg har haft problemet før, og vil MEGET gerne vide hvad det er jeg gør forkert!
Ok... Jeg troede Delphi selv oprettede en pointer til resultatet, og at jeg bare skulle specificere hvor meget memory jeg havde brug for. Det går godt nogengange(Dog ikke i dette program), nogen ide om hvordan det kan være? Jeg troede ikke det var nødvendigt at bruge pointers i Delphi overhovedet?
Du ændrer størrelsen på variablen testvector, men hvad med variablen result (som er det som funktionen returnerer)- det er principielt en variabel som alle andre? Jeg mener ikke at man kan pille ved result - og det er der problemet ligger.
Hmmm... Nu er jeg i vanskeligheder igen... Jeg skal udvide til et NxM array som result type. Jeg har prøvet blot at ændre type erklæringen for nvector til array of array of double, og får igen smidt en invalid pointer operationer i hovedet... Nogen hints???
Hvor får du fejlen? Umiddelbart burde det ikke gøre nogen forskel om der er 1 eller 2 dimensioner i dit array. Måske i: result := @testvector[0][0]; { husk at det ikke er testvector[0,0] }
Alternativt kan du lægge testvector som en global variabel - så behøver du ikke at overføre en pointer.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.