Einzelnen Beitrag anzeigen

Benutzerbild von Tyler
Tyler

Registriert seit: 19. Jun 2003
Ort: Berlin
241 Beiträge
 
#3

Re: "Ungültige Zeigeroperation" bei dynamischen Ko

  Alt 21. Sep 2004, 14:08
ich glaub den Fehler gefunden zu haben, die FOR-DO-Schleife, welche das SQL-Script füllen sollte lautete ungefähr so:

for k := 1 to Length(myPanel) also ich hier einmal die Länge fest vorgegeben habe (3) hats funktioniert. Also sorgte Length(myPanel) für den Fehler.

Ausserdem hatte ich wohl einen Denkfehler drin, denn die dynamische EditFeld-Erstellung mit

(i * 10) + 1

sorgt ja dafür, das im Array von myEdit die Adressen folgendermassen vergeben werden:

1,2,3,11,12,13,21,22,23

Ich denke mal bei einem Array ist das nicht unproblematisch, da die Adressierung wohl besser fortlaufend stattfinden sollte:

1,2,3,4,5,6,7,8

Jedenfalls hab ich das auch behoben, und erstmal funktionierts

Danke für den Hint Sharky

tyler


//EDIT

und ausserdem hab ich geschlafen:

im OnCreate der Form stand:

SetLength(myPanel, 1);
SetLength(myEdit, 1);

Das musste ich natürlich entfernen, und in der Procedure, in der die Komponenten dynamisch erzeugt werden folgendes ergänzen:

SetLength(myPanel, i + 1); // Anfangswert von i ist 0, wird je Panel mit 1 inkludiert
SetLength(myEdit, (i + 1) * 51); // pro Panel gibt es 5 Editfelder

Nur noch eine Frage... ich hab im Forum gelesen, das man SetLength so selten wie möglich nutzen soll, da die Funktion sehr speicherintensiv ist? Was ist an der Aussage dran?
  Mit Zitat antworten Zitat