![]() |
Abschreibungsprocedur in Delphi
Hallo,
ich bin auf dem Gebiet mit Pascal zu programmieren eher neu und kenne mich etwas mehr in Java aus. Ich wollte eine Procedure für die Abschreibung von z.B. Maschinen in einem Unternehmen schreiben. Wobei es um eine lineare Abschreibung geht. Hierfür habe ich mir vorgestellt 2 Eingabefelder zu erstellen. Was ich auch schon gemacht habe ;) Zudem eine Tabelle wo halt die Jahre, Abschreibungsbeträge und Restwert drin stehen. Habe nur eine Tabelle die sich nicht füllt. Außerdem bekomme ich Probleme mit den Schleifen, weil die Tabelle muss ja immer solang sein, also rows, wie die Anzahl der Jahre? Habe es bis jetzt so realisiert:
Delphi-Quellcode:
Bekomme es nur leider nicht weiter hin. Ich möchte das die Tabelle sich dynamisch verlänger, und das die Daten alle eingetragen werden.procedure TLinearAbschr(Sender: TObject); var jahre : integer; afabetrag, wert, restwert: double; stgtabelle.cells[0,0] := 'Nutzjahr'; stgtabelle.cells[1,0] := 'AFA-Betrag'; stgtabelle.cells[2,0] := 'Restbuchwert'; begin wert := strtofloat (edit1.text); jahre := strtoint (edit2.text); afabetrag := (kosten / jahre); restwert := (wert - afabetrag); tabel.cells[1,1] := floattostr (afabetrag); tabel.cells[2,1] := floattostr(restwert); end; end. |
Re: Abschreibungsprocedur in Delphi
das dynamische erweitern der tabelle funktioniert mit
Delphi-Quellcode:
ich denke mal wenn du java kannst solltest du auch ohne probleme in delphi eine schleife hinbekommen. ich denke mal du weißt schon wie es ablaufen soll (das ist ja in jeder sprache ziemlich gleich).
tabel.RowCount := 1234;
tabel.ColCount := 567; die 3 grundlegenden schleifen heissen in delphi: Kopfgesteuert:
Delphi-Quellcode:
Fußgesteuert:
while ( i > 0 ) do
begin // irgendwas end;
Delphi-Quellcode:
und die
repeat
// tu was.. until ( i <= 0 ); Zählschleife:
Delphi-Quellcode:
ich hoffe damit geholfen zu haben :-)
for i := 1 to n do
begin // do sth end; |
Re: Abschreibungsprocedur in Delphi
Alles klar.
Also muss ich die Tabelle bei column immer auf 3 setzen und bei row auf anzahl jahre + 1 weil der erste wert für den namen ist? Das ich Java bisschen kenne hat ja nix damit zu tun, das ich es auch behersche ;) Weiß halt nur net ganz wo ich die Schleife und das mit der Tabelle in meinem Quellcode einbauen soll. |
Re: Abschreibungsprocedur in Delphi
Delphi-Quellcode:
schnell zusammengetippt. vielleicht hilft das auch noch bissl weiter. denke nicht dass es fehlerfrei ist. hab grad kein delphi zur hand. anschauen und verstehen und dann so ändern dass es funzt :-)
wert := strtofloat (edit1.text);
jahre := strtoint (edit2.text); afabetrag := (kosten / jahre); i := 1; // wird für die reihe verwendet.. while (restwert > afabetrag) do begin restwert:= restwert - afabetrag; tabel.cells[ i,1 ] := floattostr( restwert ); inc(i); end; tabel.cells[i,1] := floattostr(restwert); |
Re: Abschreibungsprocedur in Delphi
Delphi-Quellcode:
So würde ich das machen. :)
procedure LinearAbschr(Sender: TObject);
var jahre, i : integer; afabetrag, wert, restwert: double; begin stgtabelle.cells[0,0] := 'Nutzjahr'; stgtabelle.cells[1,0] := 'AFA-Betrag'; stgtabelle.cells[2,0] := 'Restbuchwert'; wert := StrToFloat(Edit1.Text); jahre := StrToInt (Edit2.Text); afabetrag := (kosten / jahre); // Abschreibungsbetrag stgtabelle.RowCount := jahre + 1; // Länge Tabelle for i := 1 to jahre do // für jedes Jahr begin restwert := (wert - i * afabetrag); // Restwert berechnen stgtabelle.Cells[0, i] := IntToStr (i); stgtabelle.cells[1, i] := floattostr (afabetrag); stgtabelle.cells[2, i] := floattostr (restwert); end; end; *** Zu langsam. xD Naja, andere Schleife. Such dir was raus! *** |
Re: Abschreibungsprocedur in Delphi
|
Re: Abschreibungsprocedur in Delphi
Funktioniert bei mir irgendwie noch net, aber verstehe auch was net.
Nun wird doch immer nur der Restwert gesetzt? Den ermittelten Afa-Betrag kann ich mit einer Schleife, wo anzahl jahre > 0 ist durchlaufen lassen und eintragen? Und zum anderen: jährlich reicht mir aber ;) |
Re: Abschreibungsprocedur in Delphi
Herzlich willkommen in der Delphi-PRAXiS, DelphiE46.
Du musst in der Schleife den Wert korrigieren, wenn er den Restwert reflektieren soll:
Delphi-Quellcode:
Freundliche Grüße
const
SP_JAHR = 0; SP_AFA = 1; SP_REST = 2; procedure TDemoForm.ButtonClick(Sender: TObject); var iJahr, nJahre: Integer; cAfa, cWert: Currency; d: Double; begin if TryStrToFloat(WertEdit.Text, d) and TryStrToInt(JahreEdit.Text, nJahre) then with StringGrid do begin cWert := d; RowCount := nJahre + FixedRows; cAfa := Trunc(cWert / nJahre); for iJahr := 1 to nJahre do begin if iJahr = nJahre then cAfa := cWert; cWert := cWert - cAfa; Cells[SP_JAHR, Pred(FixedRows + iJahr)] := IntToStr(iJahr); Cells[SP_AFA, Pred(FixedRows + iJahr)] := Format('%m', [cAfa]); Cells[SP_REST, Pred(FixedRows + iJahr)] := Format('%m', [cWert]); end; end; end; |
Re: Abschreibungsprocedur in Delphi
Cool sieht ja aus wie das fertige Programm. Werde es gleich mal testen, danke ;)
Muss ich nun noch was beachten oder geht das so?? |
Re: Abschreibungsprocedur in Delphi
Das sieht nur fertig aus.
Was du sonst noch beachten musst, das merkst du beim Spielen mit deinem Programm. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:49 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