| Autor |
Beitrag |
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Mi 18.12.02 14:19
Was ist in diesem Code der grundlegende Fehler? Ich seh ihn nicht, steh wohl aufm Schlauch
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:
| type TProgramm = record name:String; CheckBox:TCheckBox; Text:TLabel; XMLFile:TXMLDocument; XMLInternet:TXMLDocument; end;
var programs:array of TProgramm begin for i:=0 to Length(programs)-1 do with programs[i] do begin xmlinetstream:=TMemoryStream.Create; XMLInternet:=TXMLDocument.Create(Self); IdHTTP.Get(serverform.LabeledEdit1.Text+programs[i].name+'.xml',xmlinetstream); xmlinetstream.LoadFromStream(xmlinetstream); if update(i) then begin CheckBox:=TCheckBox.Create(Self); Parent:=Panel3; Left:=136;Top:=70+i*25; Caption:=programs[i].name; end; xmlinetstream.Free; end; |
Die anderen unwichtigen Sachen hab ich weggelassen
Beim Erzeugen der CheckBox bekomm ich immer einen Stack OVerflow, sobald die Prozedur beendet ist, aber warum?
Gruß
|
|
smiegel
      
Beiträge: 992
Erhaltene Danke: 1
WIN 7
D7 Prof., C#, RAD XE Prof.
|
Verfasst: Mi 18.12.02 14:46
Hallo,
wann und wo wird Dein array of TProgramm initializiert?
Falsch:
Quelltext 1:
| for i:=0 to Length(programs)-1 do |
besser so:
Quelltext 1:
| for i:=0 to High(programs) do |
_________________ Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Mi 18.12.02 15:10
dann am besten sofort:
Quelltext 1:
| for i:= Low (programs) to High (programs) do |
Gruß
TINO
|
|
UGrohne 
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Mi 18.12.02 16:36
Das Array wird eigentlich nirgends initialisiert, brauch ich ja doch auch net, oder ?
Das mit dem High isn netter Tipp, aber es hilft ja generell net weiter. Sobald ich die CheckBox erzeuge bringt er den Stapelüberlauf.
Davor wird das Label erzeugt und angezeigt, das funktioniert auch sehr gut. Ich weiß net, worans liegt. 
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Mi 18.12.02 16:45
| UGrohne hat folgendes geschrieben: | | Das Array wird eigentlich nirgends initialisiert, brauch ich ja doch auch net, oder ? |
Dann wird der Code in der FOR-NEXT-Schleife doch garnicht bearbeitet!
Gruß
TINO
|
|
UGrohne 
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Mi 18.12.02 17:17
Ach das meinst Du, ok.
Ne, das Array stellt eine Liste von Programmen dar, die vorher aus der Registry gelesen werden. Danach wird das array gefüllt mit den Programmnamen und XML-Dokumenten mit Versionsinformationen aus dem Verzeichnis des Programms.
Mit diesem Code sollen jetzt die Infos ausm Internet geholt werden und die XML-Daten auch in das array reinkommen. Dann soll mit der Funktion update überprüft werden, ob das Programm upgedatet werden soll oder nicht und wenn ja, soll eine CheckBox erzeugt werden, die dem Anwender diese Möglichkeit eröffnet.
So, und jetzt wisst ihr auch, dass es um ein Update-Programm geht *g*
|
|
smiegel
      
Beiträge: 992
Erhaltene Danke: 1
WIN 7
D7 Prof., C#, RAD XE Prof.
|
Verfasst: Mi 18.12.02 18:35
Hallo,
warum muss ein dynamisches Array nicht initialisieren werden und warum soll dann die For-Next-Schleife nicht gehen?
_________________ Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
|
|
UGrohne 
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Mi 18.12.02 19:04
Ich habs auch erst beim 2. Lesen verstanden: Es ging darum, dass das dynamische Array ja eine Größe haben muss, und das meintest Du mit Initialisieren. Denn sonst wären ja keine Elemente drin und dann würde die For-Next-Schleife nicht funktionieren, da die Länge des Arrays ja 0 wäre. So hab ichs jetzt verstanden
|
|
UGrohne 
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Mi 18.12.02 19:24
Keiner hats gesehn, ich habs endlich entdeckt: Dieses with ... hat mich total durcheinander gebracht. Hab ja bei Parent, left, top usw nicht die Eigenschaft von der CheckBox verändert sondern vom formular selbst. Habs bemerkt, als ich Parent auskommentiert hab, da hats getan, nur hats dann das fenster verschoben.
Also jetzt funktionierts, trotzdem vielen Dank an alle. *g*
Dumm darf man sein, man sollte sich nur nicht erwischen lassen
Gruß
|
|