| 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)
|
Verfasst: 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 Martok: Topic aus Sonstiges (Delphi) verschoben am Di 30.11.2010 um 21:26
Moderiert von Narses: Anhang von RAR -> ZIP und inline -> normal
Einloggen, um Attachments anzusehen!
|
|
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: 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):
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 
Hält's aus hier
Beiträge: 14
Windows 7, Ubuntu 10
C#(Visual Studio), Delphi (Lazarus), Java (Eclipse), PHP (Adobe Dreamweaver)
|
Verfasst: 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 Narses: Anhang im ersten Post aktualisiert.
|
|
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: 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:
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 
Hält's aus hier
Beiträge: 14
Windows 7, Ubuntu 10
C#(Visual Studio), Delphi (Lazarus), Java (Eclipse), PHP (Adobe Dreamweaver)
|
Verfasst: 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
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Di 07.12.10 10:29
meinst Du
Delphi-Quelltext ?
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Für diesen Beitrag haben gedankt: PyroFa
|
|
PyroFa 
Hält's aus hier
Beiträge: 14
Windows 7, Ubuntu 10
C#(Visual Studio), Delphi (Lazarus), Java (Eclipse), PHP (Adobe Dreamweaver)
|
Verfasst: 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:
Quelltext 1:
| StringGrid1.RowCount := strtoint(ND.Text)+1; |
|
|
PyroFa 
Hält's aus hier
Beiträge: 14
Windows 7, Ubuntu 10
C#(Visual Studio), Delphi (Lazarus), Java (Eclipse), PHP (Adobe Dreamweaver)
|
Verfasst: 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:
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
|
Verfasst: 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
      
Beiträge: 39
Erhaltene Danke: 2
|
Verfasst: 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: Luckie war schneller =/
Für diesen Beitrag haben gedankt: PyroFa
|
|
PyroFa 
Hält's aus hier
Beiträge: 14
Windows 7, Ubuntu 10
C#(Visual Studio), Delphi (Lazarus), Java (Eclipse), PHP (Adobe Dreamweaver)
|
Verfasst: 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
|
Verfasst: Di 07.12.10 11:47
Für diesen Beitrag haben gedankt: PyroFa
|
|
PyroFa 
Hält's aus hier
Beiträge: 14
Windows 7, Ubuntu 10
C#(Visual Studio), Delphi (Lazarus), Java (Eclipse), PHP (Adobe Dreamweaver)
|
Verfasst: 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
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: 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 
Hält's aus hier
Beiträge: 14
Windows 7, Ubuntu 10
C#(Visual Studio), Delphi (Lazarus), Java (Eclipse), PHP (Adobe Dreamweaver)
|
Verfasst: 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:
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
      
Beiträge: 414
Erhaltene Danke: 23
|
Verfasst: Di 07.12.10 12:44
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:
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:
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 
Hält's aus hier
Beiträge: 14
Windows 7, Ubuntu 10
C#(Visual Studio), Delphi (Lazarus), Java (Eclipse), PHP (Adobe Dreamweaver)
|
Verfasst: Di 07.12.10 13:44
|
|
PyroFa 
Hält's aus hier
Beiträge: 14
Windows 7, Ubuntu 10
C#(Visual Studio), Delphi (Lazarus), Java (Eclipse), PHP (Adobe Dreamweaver)
|
Verfasst: 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:
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 x:=0; y:=j+1; j:=j+1; StringGrid2.Cells[x, y] := inttostr(j);
x:=1; y:=1; StringGrid2.Cells[x, y] := floattostr(anfbudeg);
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);
x:=3; y:=j; restbudeg:=restbudeg-dabschrbetrag; StringGrid3.Cells[x, y] := floattostr(restbudeg); anfwdeg:=restbudeg;
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
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Di 14.12.10 10:16
Deine Zelladressierung stimmt nicht, Beispiel:
Delphi-Quelltext 1: 2: 3: 4: 5:
| x:=0; y:=j+1; j:=j+1; StringGrid2.Cells[x, y - j] := inttostr(j); |
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Für diesen Beitrag haben gedankt: PyroFa
|
|
PyroFa 
Hält's aus hier
Beiträge: 14
Windows 7, Ubuntu 10
C#(Visual Studio), Delphi (Lazarus), Java (Eclipse), PHP (Adobe Dreamweaver)
|
Verfasst: 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.
|
|