Autor Beitrag
PyroFa
Hält's aus hier
Beiträge: 14

Windows 7, Ubuntu 10
C#(Visual Studio), Delphi (Lazarus), Java (Eclipse), PHP (Adobe Dreamweaver)
BeitragVerfasst: Di 30.11.10 19:51 
Guten Abend,

ich bin zur Zeit dabei, ein Programm zur Berechnung von Abschreibungen zu erstellen. Studiere im 1. Semester Wirtschaftsinformatik und habe bisher nur etwas Erfahrung im Hinblick auf Konsolenanwendungen.

Zur Frage:
Als Leistungsnachweis habe ich einen Abschreibungsrechner programmiert. Das ganze gefällt mir aber so noch nicht (ist aber vom Prof bereits durchgewunken worden). Ich würde gerne für mich das Programm noch grafisch umsetzen. Habe allerdings keine Ahnung davon. Ich habe an dieses Thema die Konsolenanwendung und die ersten Schritte der grafischen Anwendung angefügt. Es wäre sehr nett, wenn mir jemand antworten könnte, wie ich in der grafischen Anwendung die eingegebenen Werte berechnen und mir in den im Programm enthaltenen Groupboxen ausgeben lassen kann.

Zur Info: Als Programmierumgebung nutze ich Lazarus.


Moderiert von user profile iconMartok: Topic aus Sonstiges (Delphi) verschoben am Di 30.11.2010 um 21:26
Moderiert von user profile iconNarses: Anhang von RAR -> ZIP und inline -> normal
Einloggen, um Attachments anzusehen!
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Di 30.11.10 20:11 
GNOME FileRoller kann RAR wie es ausschaut nicht öffnen (und ich denke nicht, das BZIP oder GNU Zip das unterstützen werden). Aber Werte ausgeben allgemein in irgendeiner Form kannst du z. B. so (wenn du z. B. ein TLabel hast):

ausblenden Delphi-Quelltext
1:
2:
3:
lblAnzeige.Caption := 'Hallo';
lblAnzeige.Caption := IntToStr(einInteger);
lblAnzeige.Caption := FloatToStr(eineGleitkommazahl);


Wichtig ist hier halt eine Typumwandlung (nicht verwechseln mit einem Cast!!!), die du bei Write(Ln) nicht brauchst (in C gibt es dafür z. B. Formatstrings, die du in Pascal nicht hast).

Für diesen Beitrag haben gedankt: PyroFa
PyroFa Threadstarter
Hält's aus hier
Beiträge: 14

Windows 7, Ubuntu 10
C#(Visual Studio), Delphi (Lazarus), Java (Eclipse), PHP (Adobe Dreamweaver)
BeitragVerfasst: Mi 01.12.10 09:52 
Habe das ganze noch mal als ZIP-Datei hochgeladen. Aber danke erst mal für die schnelle Antwort

Moderiert von user profile iconNarses: Anhang im ersten Post aktualisiert.
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Mi 01.12.10 18:18 
Also viel kann man da ja noch nicht sehen. Außerdem verstehe ich bei mancher Unit nicht ganz, wozu du sie einbindest. Aber ich nehme mal an, du willst die Daten in dein StringGrid schreiben. Das machst du einfach so hier:

ausblenden Delphi-Quelltext
1:
2:
StringGrid1.Cells[x, y] := 'Text';
StringGrid1.Cells[x, y] := IntToStr(Wert);


x und y sind die Spalte und die Zeile der Zelle. Die ersten sind immer 0, die zweiten 1, usw. Auch ausgegraute Spalten und Zeilen (Anzahl legst du mit FixedRows und FixedCols fest) zählen mit und lassen sich beschreiben.

Für diesen Beitrag haben gedankt: PyroFa
PyroFa Threadstarter
Hält's aus hier
Beiträge: 14

Windows 7, Ubuntu 10
C#(Visual Studio), Delphi (Lazarus), Java (Eclipse), PHP (Adobe Dreamweaver)
BeitragVerfasst: Di 07.12.10 10:18 
So nach etwas längerer Zeit eine weitere Frage dazu. Wie kann ich die Anzahl der Reihen in einem TStringGrid dynamisch gestalten? Ich habe ein Edit-Feld (ND) und das TStringGrid soll die Anzahl an Reihen haben, die in ND eingegeben wurden. Wäre nett wenn mir jemand darauf eine Antwort geben könnte :)

MfG
PyroFa
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Di 07.12.10 10:29 
meinst Du
ausblenden Delphi-Quelltext
1:
StringGrid1.RowCount;					
?

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS

Für diesen Beitrag haben gedankt: PyroFa
PyroFa Threadstarter
Hält's aus hier
Beiträge: 14

Windows 7, Ubuntu 10
C#(Visual Studio), Delphi (Lazarus), Java (Eclipse), PHP (Adobe Dreamweaver)
BeitragVerfasst: Di 07.12.10 10:34 
Yeeessss... genau das hab ich gesucht. Vielen Dank. Darf der Thread eigentlich weiter auf bleiben? Weil das Programm ist ja an sich noch nicht fertig und ich kenne mich und werde den Thread noch mit weiteren Fragen beglücken ;)

Übrigens der genaue Quellcode war:

ausblenden Quelltext
1:
StringGrid1.RowCount := strtoint(ND.Text)+1;					
PyroFa Threadstarter
Hält's aus hier
Beiträge: 14

Windows 7, Ubuntu 10
C#(Visual Studio), Delphi (Lazarus), Java (Eclipse), PHP (Adobe Dreamweaver)
BeitragVerfasst: Di 07.12.10 11:37 
Und es ist auch schon soweit! Hab gerade ein Problem damit, den i-Wert einer While-Schleife in die erste Spalte des TStringGrids zu schreiben. Die erste Spalte soll in diesem Fall das Jahr sein.

Anbei einmal der momentane Quelltext:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
s1:=AW.text;
     s3:=ND.Text;
     i1:=strtofloat(s1);
     i2:=strtofloat(s3);
     i1:=i1/i2;
     s2:=floattostr(i1);
     Erg.text:=s2;

     nud:=strtoint(ND.Text);

     StringGrid1.RowCount := strtoint(ND.Text)+1;

     while i < nud do
     begin
          i:=0;
          x:=i;
          y:=0;
          i:=i+1;
          StringGrid1.Cells[x, y] := inttostr(i);
     end;


Was hab ich denn nun falsch gemacht? Die dynamische Größe des STringGrids funktioniert. Nur das füllen halt momentan noch nicht. Wäre über weitere Hilfe sehr dankbar ;)

MfG
PyroFa

[edit] Hab den Quelltext noch mal angepasst. [/edit]


Zuletzt bearbeitet von PyroFa am Di 07.12.10 11:44, insgesamt 2-mal bearbeitet
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 07.12.10 11:40 
Guck dir mal deine while-Schleife an und richte dein Augenmerk mal auf die Variable i. Macht das Sinn, was du da machst?

Für diesen Beitrag haben gedankt: PyroFa
Tintenblut
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 39
Erhaltene Danke: 2



BeitragVerfasst: Di 07.12.10 11:42 
Ich glaube, deine While-Schleife ist nicht so, wie du es willst ;)
Schau dir mal deine Laufvariable an

Edit: user profile iconLuckie war schneller =/

Für diesen Beitrag haben gedankt: PyroFa
PyroFa Threadstarter
Hält's aus hier
Beiträge: 14

Windows 7, Ubuntu 10
C#(Visual Studio), Delphi (Lazarus), Java (Eclipse), PHP (Adobe Dreamweaver)
BeitragVerfasst: Di 07.12.10 11:43 
Gut das ist korrigiert. Sollte natürlich ein kleiner Zeichen sein. Aber dann entsteht ja direkt das nächste Problem. Wie bekomme ich es denn hin, dass immer der I-Wert als X und der Y:=0 Wert genommen wird?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 07.12.10 11:47 
user profile iconPyroFa hat folgendes geschrieben Zum zitierten Posting springen:
Gut das ist korrigiert. Sollte natürlich ein kleiner Zeichen sein.

Das meinte ich nicht:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
i := 0;
...;
...;
i := i + 1

Wie sinnvoll ist dieser Code?

Für diesen Beitrag haben gedankt: PyroFa
PyroFa Threadstarter
Hält's aus hier
Beiträge: 14

Windows 7, Ubuntu 10
C#(Visual Studio), Delphi (Lazarus), Java (Eclipse), PHP (Adobe Dreamweaver)
BeitragVerfasst: Di 07.12.10 11:49 
Meiner Meinung nach sehr sinnvoll. Ich will ja durch das i den StringGrid füllen. Und ohne das i+1 bekomme ich das i doch nicht größer? Oder seh ich gerade den Wald vor lauter Bäumen nicht mehr?
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Di 07.12.10 11:51 
Das erhöhen um 1 ist sicherlich sinnvoll, aber warum setzt du es bei jedem Schleifendurchlauf am Anfang wieder zurück auf 0? Dadurch ist i am Ende der Schleife immer 1.

_________________
We are, we were and will not be.

Für diesen Beitrag haben gedankt: PyroFa
PyroFa Threadstarter
Hält's aus hier
Beiträge: 14

Windows 7, Ubuntu 10
C#(Visual Studio), Delphi (Lazarus), Java (Eclipse), PHP (Adobe Dreamweaver)
BeitragVerfasst: Di 07.12.10 11:52 
Oh das war Dumm von mir. Also i:=0 vor der Schleife setzen. Danke!

Edit: Jetzt läuft es. Hier noch mal der Quelltext:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
i:=0;

     s1:=AW.text;
     s3:=ND.Text;
     i1:=strtofloat(s1);
     i2:=strtofloat(s3);
     i1:=i1/i2;
     s2:=floattostr(i1);
     Erg.text:=s2;

     nud:=strtoint(ND.Text);

     StringGrid1.RowCount := strtoint(ND.Text)+1;

     while i < nud do
     begin
          x:=0;
          y:=i+1;
          i:=i+1;
          StringGrid1.Cells[x, y] := inttostr(i);
     end;
Tastaro
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 414
Erhaltene Danke: 23



BeitragVerfasst: Di 07.12.10 12:44 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
for i := 1 to nud - 1 do
begin
   StringGrid1.Cells[0, i] := inttostr(i);
end;

sollte etwa das gleiche tun wie deine while-Schleife.

Oder als while-Schleife:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
i := 1;
while i < nud do
begin
   StringGrid1.Cells[0, i] := inttostr(i);
   inc(i);
end;


Und dann kann man noch das tun:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
 i1 := strtofloat(AW.text);     
 i2 := strtofloat(ND.Text);     
 i1 := i1/i2;     
 Erg.text := floattostr(i1);     
 nud := strtoint(ND.Text);     
 StringGrid1.RowCount := nud + 1;

Beste Grüße
PyroFa Threadstarter
Hält's aus hier
Beiträge: 14

Windows 7, Ubuntu 10
C#(Visual Studio), Delphi (Lazarus), Java (Eclipse), PHP (Adobe Dreamweaver)
BeitragVerfasst: Di 07.12.10 13:44 
Zitat:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
i := 1;
while i < nud do
begin
   StringGrid1.Cells[0, i] := inttostr(i);
   inc(i);
end;


Und dann kann man noch das tun:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
 i1 := strtofloat(AW.text);     
 i2 := strtofloat(ND.Text);     
 i1 := i1/i2;     
 Erg.text := floattostr(i1);     
 nud := strtoint(ND.Text);     
 StringGrid1.RowCount := nud + 1;



Was bewirken die beiden Sachen denn anderes?
PyroFa Threadstarter
Hält's aus hier
Beiträge: 14

Windows 7, Ubuntu 10
C#(Visual Studio), Delphi (Lazarus), Java (Eclipse), PHP (Adobe Dreamweaver)
BeitragVerfasst: Di 14.12.10 09:56 
Guten Morgen,

habe mal wieder eine kleine Frage zu meinem Programm. Bis jetzt lief es mit dem Programmieren soweit eigentlich recht easy aber nu komm ich gar nicht mehr weiter. Habe folgenden Quelltext:

ausblenden volle Höhe Delphi-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:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
while j < nud do
     begin
          //Jahreszahl in StringGrid schreiben
          x:=0;
          y:=j+1;
          j:=j+1;
          StringGrid2.Cells[x, y] := inttostr(j);

          //Einmalig Anfangsbuchwert schreiben
          x:=1;
          y:=1;
          StringGrid2.Cells[x, y] := floattostr(anfbudeg);

          //Abschreibungsbetrag berechnen
          x:=2;
          y:=j;
          max:=(anfwdeg/i2)*100;
          dabschrbetrag:=(anfwdeg/i2)*2.5;

          if dabschrbetrag > max then
          begin
               dabschrbetrag:=max;
          end;
          StringGrid2.Cells[x, y] := floattostr(dabschrbetrag);

          //Restbuchwert in StringGrid schreiben
          x:=3;
          y:=j;
          restbudeg:=restbudeg-dabschrbetrag;
          StringGrid3.Cells[x, y] := floattostr(restbudeg);
          anfwdeg:=restbudeg;

          //Anfangsbuchwert in StringGrid schreiben
          x:=1;
          y:=j+1;
          StringGrid3.Cells[x, y] := floattostr(anfwdeg);
     end;


In dem StringGrid wird mir allerdings nur der Anfangswert bei X:=0 und Y:=1 ausgegeben und der degressive Abschreibungsbetrag. Alle anderen Grids lassen sich partout nicht füllen.

Wäre nett, wenn sich das mal jemand kurz anschauen könnte und mir schreiben könnte was ich falsch mache.

MfG
PyroFa

Edit: Hat sich erledigt, hab meinen Fehler nun doch gefunden. Jetzt stellt sich mir nur noch die Frage, wie ich die Ergebnisse mit nur zwei Stellen nach dem Komma und evtl. einem Euro-Zeichen ausgeben kann
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Di 14.12.10 10:16 
Deine Zelladressierung stimmt nicht, Beispiel:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
          x:=0;
          y:=j+1;
          j:=j+1;
          StringGrid2.Cells[x, y - j] := inttostr(j);
          //StringGrid2.Cells[x, y] := inttostr(j);

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS

Für diesen Beitrag haben gedankt: PyroFa
PyroFa Threadstarter
Hält's aus hier
Beiträge: 14

Windows 7, Ubuntu 10
C#(Visual Studio), Delphi (Lazarus), Java (Eclipse), PHP (Adobe Dreamweaver)
BeitragVerfasst: Di 14.12.10 10:28 
Das mit der Adressierung hab ich eben gefunden. Das ist bereits behoben. Aber wie bekomme ich die Werte gerundet. So wie bei Konsolenanwendungen mit Variable:4:2 gehts nicht. Und auch nicht, wenn ich die : durch , ersetze.