AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Geldrückgabeautomat programmieren, aber wie?
Thema durchsuchen
Ansicht
Themen-Optionen

Geldrückgabeautomat programmieren, aber wie?

Ein Thema von steffi20021 · begonnen am 18. Okt 2005 · letzter Beitrag vom 21. Okt 2005
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von hanselmansel
hanselmansel

Registriert seit: 23. Feb 2005
Ort: Kaiserslautern
279 Beiträge
 
Delphi 2009 Enterprise
 
#11

Re: Geldrückgabeautomat programmieren, aber wie?

  Alt 18. Okt 2005, 20:53
Wenn du Ideen für "nebenher" suchst, dann kann ich persönlich den Delphi-Kurs von Hans Lohninger empfehlen. Damit habe ich eigentlich die Anfänge gelernt, und der Kurs hat - wie ich finde - eine angenehme Lernkurve. Vor allem die detailliere Beschreibung der "Lehrerlösungen" sind gut zum Verständnis des Codes.
Ansonsten stellen sich (je nachdem, wie sehr du dich in deiner Freizeit mit Rechenmaschinen beschäftigst) im Alltag eigentlich immer wieder Aufgaben/Probleme, bei denen man sich sagt: Schreib ich doch mal schnell ein Programm in Delphi. Vor allem bei mir ist es so, dass ich (wenn ich genügend Freizeit habe) meine Quick'n Dirty-Programme um viele Funktionen erweitere, an die ich am Anfang gar nicht gedacht habe.
Da ich dabei oft an meine Grenzen stoße, bin ich immer wieder froh, einen Ansatz in den Archiven der DP zu finden.

MfG,
hanselmansel
Es gibt nur sehr wenige Probleme auf dieser Welt, die sich nicht mit einigen hundert Gramm Sprengstoff lösen ließen.
  Mit Zitat antworten Zitat
s14

Registriert seit: 15. Mai 2003
Ort: München
251 Beiträge
 
Delphi 7 Architect
 
#12

Re: Geldrückgabeautomat programmieren, aber wie?

  Alt 19. Okt 2005, 14:30
@Steffi

Sourcecode sagt oft mehr als tausend Worte. Daher habe ich ein kleines Progrämmchen angehängt, dass die oben erwähnte Funktion verwendet.


Gruß
s14
Angehängte Dateien
Dateityp: zip geldautomat_117.zip (7,3 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#13

Re: Geldrückgabeautomat programmieren, aber wie?

  Alt 19. Okt 2005, 15:08
Hallo!

Zitat von steffi20021:
PS: In der Schule haben wir Borland Delphi 6 und zuhause hab ich die 8. Muss ich irgendwas beachten, oder gibt es da keine großen Unterschiede?(außer im Design?)
Weiss nicht, ob das bisher keiner gelesen hat. Aber um mal drauf zu sprechen zu kommen. Der Unterschied ist gewaltig. Ohne jetzt mal wieder über die allgemeinen Qualitäten von D8 lästern zu wollen ( als Bierdeckel sind die CDs klasse, auch wenn jemand sich mal über das Loch in der Mitte beschwert hat )....

Delphi 8 kann nur .NET Anwendungen erstellen, kein Win32. Eine inkompatiblere Delphiversion gibt es eigentlich nicht.
Bei Delphi 8 war aber immer ein Delphi 7 dabei, wenn ich mich recht erinnere. ( Oder waren nur die Updates inkl. D7? ) Benutz lieber das! Das müsste mit dem Delphi 6 aus der Schule weitesgehend kompatibel sein.
  Mit Zitat antworten Zitat
steffi20021

Registriert seit: 18. Okt 2005
8 Beiträge
 
#14

Re: Geldrückgabeautomat programmieren, aber wie?

  Alt 21. Okt 2005, 11:17
So hab mich entschlossen noch mehr über Delphi zu lernen und werd ein bissl Zeit vor meinem Laptop verbringen.

Ich hab jetzt schon ein bissl im Internet geguckt, weil ich einiges nich verstehe, aber hab hauptsächlich Quellcodes gefunden, die mich zwar auch ein bissl weiter gebracht haben aber nich viel.
Mein Problem ist es, dass ich von den meisten Dingen nochnie was gehört habe und somit die Funktionsweise nich verstehe...Also wäre es nett, wenn ihr mir die folgenden Dinge mal kurz erklärt, oder mir ein paar Links gebt *!BITTE!*

Das sind jetzt alles Auszüge aus dem Programm von s14. Hier gleich mal DANKE an s14!

Array [x..y] of ????
Delphi-Quellcode:
Money: Array[0..14] of Cardinal = (50000, 20000, 10000, 5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 5, 2, 1);

Amount: Array[0..14] of Cardinal;
Wenn ich es richtig verstehe is bei Money die 0 für 50000, die 1 für 20000,...
Aber wie is das dann bei Amount?

Delphi-Quellcode:
// Hier wird die Anzahl der einzelnen Zahlungsmittel ermittelt
  while Change > 0 do
  for i := Low(Money) to High(Money) do
    if Change >= Money[i] then
    begin
      Inc(Amount[i]);
      Dec(Change, Money[i]);
      Break;
    end;
Hier wär es nett, wenn ihr mir das Inc, Dec und Break erklärt, vll bringt mich das schon weiter.
Oh und das i steht das für [x..y]?


Delphi-Quellcode:
// Anzeige der einzelnen Labels aktualisieren
  for i := Low(Amount) to High(Amount) do
    case i of
      0: SetLabel(Label_500, Format('%d x 500 €', [Amount[i]]), Amount[i]);
      1: SetLabel(Label_200, Format('%d x 200 €', [Amount[i]]), Amount[i]);
      2: SetLabel(Label_100, Format('%d x 100 €', [Amount[i]]), Amount[i]);
      3: SetLabel(Label_50, Format('%d x 50 €', [Amount[i]]), Amount[i]);
      4: SetLabel(Label_20, Format('%d x 20 €', [Amount[i]]), Amount[i]);
      5: SetLabel(Label_10, Format('%d x 10 €', [Amount[i]]), Amount[i]);
      6: SetLabel(Label_5, Format('%d x 5 €', [Amount[i]]), Amount[i]);
      7: SetLabel(Label_e2, Format('%d x 2 €', [Amount[i]]), Amount[i]);
      8: SetLabel(Label_e1, Format('%d x 1 €', [Amount[i]]), Amount[i]);
      9: SetLabel(Label_c50, Format('%d x 50 Cent', [Amount[i]]), Amount[i]);
      10: SetLabel(Label_c20, Format('%d x 20 Cent', [Amount[i]]), Amount[i]);
      11: SetLabel(Label_c10, Format('%d x 10 Cent', [Amount[i]]), Amount[i]);
      12: SetLabel(Label_c5, Format('%d x 5 Cent', [Amount[i]]), Amount[i]);
      13: SetLabel(Label_c2, Format('%d x 2 Cent', [Amount[i]]), Amount[i]);
      14: SetLabel(Label_c1, Format('%d x 1 Cent', [Amount[i]]), Amount[i]);
    end;
Hier blick ich absolut nich durch...! Also wenn jemand langeweile und lust hat, kann er ja probieren es mir zu erklären

Delphi-Quellcode:
// Die Einstellungen der Labels nach Bedarf setzen
  ALabel.Caption := ACaption;
  if Amount > 0 then
  begin
    ALabel.Font.Color := clRed;
    ALabel.Enabled := True;
  end else
  begin
    ALabel.Font.Color := clWindowText;
    ALabel.Enabled := False;
  end;
Steht hier ALabel für alle Label und muss man das vorher definieren, oder is das immer so?
Oh und was is ACaption?


Ok *** das is jetzt fast das ganze Programm von s14.
Aber wenigstens hab ich mal was, um richtige Fargen zu stellen...

Dann erstma Bye!
Steffi
Nur tote Fische schwimmen mit dem Strom!
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#15

Re: Geldrückgabeautomat programmieren, aber wie?

  Alt 21. Okt 2005, 11:45
Hallo, die Delphi Hilfe ist bei sowas wirklich hilfreich.

Inc inkrementiert den Wert um 1. also Wert = Wert + 1
Dec macht das gleiche umgekehrt ( dekrementiert )= Wert = Wert -1
Break beendet eine Schleife for ihrem eigentlichen ablauf

Delphi-Quellcode:
for i:= 1 to 5 do begin
  If i=3 then
    break; //Schleife läuft nur bis 3 statt bis 5
End;
Zu den Arrays. Du hast dort 2 davon. In dem Array Money sollen wohl die Wertigkeiten der Scheine stehen. Dies ist statisch. Das heisst, es steht immer das gleiche drin. mit Money[i] kannst du auf den Wert an Stelle i zugreifen. Money[0] wäre 50000 Money[1] 20000 usw.

Das Array Amount wird hier dynamisch verwendet. Ich nehme an, es soll für die Anzahl der "Scheine" aus dem Array Money stehen. Im Grunde Sind es 15 Variablen in einer, die du über den Index (0 bis 14 ) referenzieren kannst. Hier steht zu Beginn in allen Werten "Nichts" drin. Also 0. Erst durch die Inkrementierung bzw. Dekrementierung ändert sich der Wert.

Delphi-Quellcode:
wert = Amount[5] //wert ist 0
inc( Amount[5] ) //erhöhen um 1
wert = Amount[5] //Wert ist 1
  Mit Zitat antworten Zitat
s14

Registriert seit: 15. Mai 2003
Ort: München
251 Beiträge
 
Delphi 7 Architect
 
#16

Re: Geldrückgabeautomat programmieren, aber wie?

  Alt 21. Okt 2005, 12:00
Treffnix hat ja schon einiges richtig erklärt.

Zitat:
Steht hier ALabel für alle Label und muss man das vorher definieren, oder is das immer so?
Oh und was is ACaption?
Ich habe lediglich die Procedure:
procedure SetLabel(ALabel: TLabel; ACaption: String; Amount: Cardinal); ausgelagert, da sonst bei jeder Case-Anweisung die Einstellungen für das entsprechende Label vorgenommen werden müssten.
Der Sinn ist, dass öfter verwendete Programmzeilen in eine eigene Procedure ausgelagert werden sollten. Der Code wird einfach übersichtlicher. (Finde ich

ALabel steht einfach nur für die Label-Komponente die von der Unterroutine angesprochen werden soll,
ACaption entspricht dem Text der dem Label übergeben wird.

Delphi-Quellcode:
  for i := Low(Amount) to High(Amount) do
    case i of
      0: SetLabel(Label_500, Format('%d x 500 €', [Amount[i]]), Amount[i]);
      1: SetLabel(Label_200, Format('%d x 200 €', [Amount[i]]), Amount[i]);
      .
      .
Bei i = 0 wird die Label-Komponente "Label_500" angesprochen, bei i = 1 "Label_200" usw.
Deklariert werden muss da nix, da die Label ja bereits auf dem Formular existieren.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz