Autor Beitrag
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mi 18.12.02 14:19 
Was ist in diesem Code der grundlegende Fehler? Ich seh ihn nicht, steh wohl aufm Schlauch

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Mi 18.12.02 14:46 
Hallo,

wann und wo wird Dein array of TProgramm initializiert?

Falsch:
ausblenden Quelltext
1:
  for i:=0 to Length(programs)-1 do					

besser so:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mi 18.12.02 15:10 
dann am besten sofort:
ausblenden Quelltext
1:
 for i:= Low (programs) to High (programs) do					

Gruß
TINO
UGrohne Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: 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ß