Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Verstehe die Zählschleifen und VCL-Komponenten nicht-Schule! (https://www.delphipraxis.net/83898-verstehe-die-zaehlschleifen-und-vcl-komponenten-nicht-schule.html)

Tormentor32 8. Jan 2007 10:17

Re: Verstehe die Zählschleifen und VCL-Komponenten nicht-Sch
 
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var n: array[0..49] of TCheckBox;
i: integer;
n.top: integer; // Das kannst du nicht machen
begin
for i:=0 to 49 - 1 do // von 0 bis 49 heißt 50, die -1 ist überflüssig
begin
n[i]:=TCheckbox.Create(Form1);
n[i].parent:=Form1;
n[i].width := 90; // beispielwerte, ist aber nötig, sonst kann man die nicht sehen
n[i].height := 30;
n[i].left:=100; // übverflüssig s.u.
n[i].top:=100; // überflüssig, da du direkt danach den Wert neu setzt
n[i].top:= 102 + n[i].height*i; // sonst würde trotzdem jede Checkbox an der Gleichen stelle sein
n[i].left:= 102 + n[i].width*i;
n[i].show; // hatte ich vergessen, sorry
end;
sollte so klappen

Das mit dem freigeben musst du machen, weil du mit dem aufruf
Delphi-Quellcode:
n[i] := TCheckbox.Create;
Speicherplatz für die Checkbox reservierst. Wenn du diesen Speicherplatz beim Beenden des Programms nicht freigibst, dann kann er nicht mehr genutzt werden => Speicherleck

ps: Es gibt übrigens die Edit Funktion, es ist nicht nötig 3 Beiträge hintereinander zu schreiben...

QuickAndDirty 8. Jan 2007 10:34

Re: Verstehe die Zählschleifen und VCL-Komponenten nicht-Sch
 
Also ,
eigentlich must du sie nicht freigeben weil die ja das Formular als Besitzer (Owner)
haben können....

Ehrlich gesagt glaube ich nicht das Du Delphi in einem Forum lernen kannst.
Es ist auch etwas mehr Engagement nötig um das zu lernen (Lese bitte (auch) ein Buch).

Jeder beantwortet Dir hier gerne deine Fragen.
Leider sind die meisten nicht daran interresiert jemandes Hausaufgaben zu machen,
auch wenn wir alle mal was abgeschrieben haben. (Die Perspektive ändert sich wenn man die Schule hinter sich hat... :P )


zu
Was sind...

Controls sind die Dinge die man auf ein Formular legt oder dort erzeugt.
Controls sind also alle visuellen Componenten deines Programms.

Wir nennen Sie so weil sie alle von eine Klasse namens TControl erben.

aengstlichesReh 15. Jan 2007 14:09

Re: Verstehe die Zählschleifen und VCL-Komponenten nicht-Sch
 
Guten Tag :)

Hab heut ne andre Aufgabe bekommen, um meine Noten aufzubessern. Bin schon recht eit, abre was bedeutet die Fehlermeldung inkompatible Zypen integer und extendet? ansonsten scheint alles richtig zu sein.

LG

Engel

Tormentor32 15. Jan 2007 14:11

Re: Verstehe die Zählschleifen und VCL-Komponenten nicht-Sch
 
Du vergleichst irgendwo in deinem Programm einen Zeiger mit einem Gleitkommawert, das geht nicht...

TStringlist 15. Jan 2007 14:44

Re: Verstehe die Zählschleifen und VCL-Komponenten nicht-Sch
 
Tormentor32 meinte eher, dass du irgendwo in deinem Programm einen Ganzzahlwert (=integer-Typ) mit einem (Gleit-)Kommawert (=extended-Typ) vergleichst, was nicht geht. Zuvor solltest du also den Integer-Wert einfach mal mit 1.0 multiplizieren. Dadurch wird aus diesem nämlich auch ein Kommawert und die Sache müsste eigentlich klappen.

PS. Ansonsten: Bei neuen Fragen ruhig einen neuen Thread aufmachen.

Tormentor32 15. Jan 2007 14:46

Re: Verstehe die Zählschleifen und VCL-Komponenten nicht-Sch
 
Zitat:

Zitat von Tormentor32
Du vergleichst irgendwo in deinem Programm einen Zeiger mit einem Gleitkommawert, das geht nicht...

Hä?? Wie komm ich denn auf Zeiger?

Zitat:

Zypen integer
Da hab ich wohl zu schnell gelesen... :oops:

MaBuSE 15. Jan 2007 14:47

Re: Verstehe die Zählschleifen und VCL-Komponenten nicht-Sch
 
Zitat:

Zitat von Tormentor32
Du vergleichst irgendwo in deinem Programm einen Zeiger mit einem Gleitkommawert, das geht nicht...

Nein, Integer und Extendet bedeutet, dass sie Integer (Ganzzahlen) mit Extented (Kommazahlen) vergleicht / zuweist.

Das geht nicht.

Du must entweder
Deine Integer in Kommazahlen konvertieren
oder
Deine Kommazahlen in Integer konvertieren.


Mit Round(3.2) wandelst Du z.B. den Extented Wert (3.2) in einen Integer (2) um.
Dieser Vorgang wird auch Runden genannt. ;-)

Delphi-Quellcode:
// mach aus der Kommazahl e eine Ganzzahl i
i := Round(e);

MaBuSE 15. Jan 2007 14:48

Re: Verstehe die Zählschleifen und VCL-Komponenten nicht-Sch
 
Sorry, ich war zu langsam :-(
(sollte da nicht ein roter Kasten/Hinweis kommen?)

Angel4585 15. Jan 2007 14:51

Re: Verstehe die Zählschleifen und VCL-Komponenten nicht-Sch
 
Zitat:

Zitat von MaBuSE
Mit Round(3.2) wandelst Du z.B. den Extented Wert (3.2) in einen Integer (2) um.
Dieser Vorgang wird auch Runden genannt. ;-)

sollte da nicht Integer(3) rauskommen? :gruebel:

Tormentor32 15. Jan 2007 14:54

Re: Verstehe die Zählschleifen und VCL-Komponenten nicht-Sch
 
Nein Jakommt nicht raus, grade ausprobiert...

edit: so doof muss man erstmal sein: Will ausprobieren, was bei round(2.2) rauskommt und schreibt hin: round(3.2) :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:22 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz