Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Abschreibungsprocedur in Delphi (https://www.delphipraxis.net/116581-abschreibungsprocedur-delphi.html)

DelphiE46 2. Jul 2008 15:45


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:

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.
Bekomme es nur leider nicht weiter hin. Ich möchte das die Tabelle sich dynamisch verlänger, und das die Daten alle eingetragen werden.

Relicted 2. Jul 2008 15:56

Re: Abschreibungsprocedur in Delphi
 
das dynamische erweitern der tabelle funktioniert mit

Delphi-Quellcode:
tabel.RowCount := 1234;
tabel.ColCount := 567;
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).


die 3 grundlegenden schleifen heissen in delphi:

Kopfgesteuert:
Delphi-Quellcode:
while ( i > 0 ) do
begin
  // irgendwas
end;
Fußgesteuert:
Delphi-Quellcode:
repeat
  // tu was..
until ( i <= 0 );
und die
Zählschleife:

Delphi-Quellcode:
for i := 1 to n do
begin
  // do sth
end;
ich hoffe damit geholfen zu haben :-)

DelphiE46 2. Jul 2008 16:02

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.

Relicted 2. Jul 2008 16:22

Re: Abschreibungsprocedur in Delphi
 
Delphi-Quellcode:
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);
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 :-)

freak4fun 2. Jul 2008 16:24

Re: Abschreibungsprocedur in Delphi
 
Delphi-Quellcode:
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;
So würde ich das machen. :)

*** Zu langsam. xD Naja, andere Schleife. Such dir was raus! ***

Gravitar 2. Jul 2008 16:35

Re: Abschreibungsprocedur in Delphi
 
Hi,

müsste die Abschreibung nicht monatsgenau erfolgen?

Guckst Du hierSteuerlexikon

Gruß, Andreas

DelphiE46 2. Jul 2008 16:56

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 ;)

marabu 2. Jul 2008 17:27

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:
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;
Freundliche Grüße

DelphiE46 2. Jul 2008 17:30

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??

marabu 2. Jul 2008 17:37

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