![]() |
Problem mit StringGrid-Schleife
Hi hab lange nachgedacht.. sehs aber einfach nicht:
Delphi-Quellcode:
Will mit dieser Schleife ein String Grid befüllen allerding sieht das resultat wie folgt aus:
for i := 1 to DaysInMonth(date) do
begin if count = 7 then begin Kalender.Cells[count,row]:=IntToStr(i); inc(row); count:=0; end else begin Kalender.Cells[count,row]:=IntToStr(i); inc(count); end; end; 1 2 3 4 5 6 7 9 10 11 12 13 14 15 17 18 19 20 21 22 23 25 26 27 28 29 30 31 Er überspringt also die 8, 16 und 24 sieht jemand wieso? |
Re: Problem mit StringGrid-Schleife
Die erste Zelle oben links hat die Koordinaten [0,0]
|
Re: Problem mit StringGrid-Schleife
Einfacher geht es so:
Delphi-Quellcode:
mfg
for i := 0 to DaysInMonth(Now) - 1 do
StringGrid1.Cells[i mod 7, i div 7] := IntToStr(i+1); Patti |
Re: Problem mit StringGrid-Schleife
Falls das ein Kalender werden soll, fehlt Die jetzt noch FirstDayOfMonth aus den
![]() Grüß Wolfgang |
Re: Problem mit StringGrid-Schleife
Wen ichs jetz mal so mache wie ichs hab, da ich von mod und div noch nie was gehört habe...
sollte ich vielleicht mal die komplette prozedur einfügen:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer; count: Integer; row: Integer; begin row:=1; count:=0; Tage:=DaysInMonth(date); MessageDlg('Willkommen heute ist der '+DateToStr(date)+' dieser Monat hat '+IntToStr(DaysInMonth(date))+' Tage!',mtInformation,[mbOk],0); for i := 1 to DaysInMonth(date) do begin if count = 7 then begin Kalender.Cells[count,row]:=IntToStr(i); inc(row); count:=0; end else begin Kalender.Cells[count,row]:=IntToStr(i); inc(count); end; end; @Wolfgang: Ich fange absichtlich in der zweiten reihe an damit oben Montag...Dienstag ect. stehen kann |
Re: Problem mit StringGrid-Schleife
Okay, aber der 1, des Monats sollte an der richtigen X_Position stehen
[Edit] Div teilt ganze Zahlen, das Ergebnis ist wieder ganz. Mod ist der ganzzahlige Rest einer Division. Steht aber auch in der OH [/Edit] Gruß Wolfgang |
Re: Problem mit StringGrid-Schleife
Womit mein problem noch immer nicht gelößt ist... siehe ganz oben...
ps:Ich habe vor die beschriftung Montag dienstag ect. passend zu verschieben... |
Re: Problem mit StringGrid-Schleife
Montag ist in jedem Kalender immer oben links. Wo ist das Problem?
|
Re: Problem mit StringGrid-Schleife
Wenn du auf div und mod verzichten und die Schleife so wie oben aufbauen willst, dann musst du folgendes machen:
Delphi-Quellcode:
mfg
row := 1;
count := 0; // for i := 1 to DaysInMonth(date) do begin if count = 7 then begin count := 0; // <-- erst Koordinaten setzen inc(row); Kalender.Cells[count,row] := IntToStr(i); //<-- dann schreiben inc(count); //<-- und count noch erhöhen end else begin Kalender.Cells[count,row] := IntToStr(i); inc(count); end; end; |
Re: Problem mit StringGrid-Schleife
Dankeschön ;)
|
Re: Problem mit StringGrid-Schleife
@patti
Wenn die TE kompletten Code bekommen, lernen sie IMHO absolut nichts. Gruß Wolfgang |
Re: Problem mit StringGrid-Schleife
1. TE???
und 2. Dadurch das er mir gesagt hat wie's muss ist mir aufgefallen worans lag: Nämlich das bei der bedingung if count = 7 das feld 1,7 schon beschrieben ist... |
Re: Problem mit StringGrid-Schleife
Bitteschön. Aber wie ich weiter oben schon geschrieben habe: Mit div und mod wäre das ganze etwas einfacher und übersichtlicher. Wolfgang Mix hat ja bereits eine kleine Erklärung dazu geschrieben:
Zitat:
Code:
Wenn du das einmal verstanden hast, kannst du einige Schleifen vereinfachen und einige Dinge abkürzen. Das nur so als kleiner Tipp ;-)
8 div 7 = 1 // ganzzahliges Teilen, die 7 geht in die 8 nur einmal rein
8 mod 7 = 1 // Rest des ganzzahligen Teilens (= 8 - (8 div 7)*7) mfg Edit: 1. TE = Thread-Ersteller, also der, der den Thread eröffnet hat 2. Er hat in seinem ersten Post geschrieben, dass er schon lange nach dem Fehler sucht, also hat er sich ja selbst schon Gedanken gemacht. Das finde ich absolut ok und dann darf IMHO auch mit einem kompletten Code-Schnipsel geholfen werden. Immerhin scheint er es ja jetzt verstanden zu haben ;-) |
Re: Problem mit StringGrid-Schleife
TE .. Thread-Einsteller und ...
er hat Dir nicht gesagt, wo Dein Fehler liegt, sondern fertigen Code geliefert. Das ist ein himmelweiter Unterschied. Sorry, ich habe Dich noch in Erinnerung als den Mann, der versucht, möglichst alles ohne Mathematik zu lösen. Gruß Wolfgang |
Re: Problem mit StringGrid-Schleife
Naja, bei einem so "kleinem" Problem sehe ich kaum eine andere Möglichkeit, als den Fehler zu beheben und die richtige Lösung in Form von Quelltext zu liefern, der ja noch dazu leicht kommentiert war. Gut, ich habe nicht unbedingt geschrieben, woran es genau lag, dass es nicht funktioniert hat, aber anscheinend hat meine kleine Erklärung ja ausgereicht, um den "Knoten zu lösen". Was hätte ich denn sonst machen sollen?
Das hat aber jetzt nichts mehr mit dem ursprünglichen Thema zu tun... |
Re: Problem mit StringGrid-Schleife
Tipps geben, mit denen er selber weiter kommt
[Edit] ... sonst glaubt der TE am Ende, er hätte etwas selbst "programmiert" ... [/Edit] |
Re: Problem mit StringGrid-Schleife
Manchmal hat man nunmal ein Brett vor dem Kopf und da ist es gut wenn einem jemand weiterhelfen kann dann komm ich her... und da meine Ideen über das was ich in der Schule lerne hinausgehen stelle ich wohl oft Fragen die für andere selbstverständlich zu sein scheinen...
Ein anderer Punkt ist das die meisten Leute hier ein anderes Delphi lernen als ich, womit ich nur meine das die anderen andere Grundlagen kennen als ich... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz