| Autor |
Beitrag |
wayne123
      
Beiträge: 52
|
Verfasst: Fr 01.10.10 21:29
Also ich möchte einen Stromkostenrechner , erstmal mit 10 aus dem Internet genommenen Stromanbietern, machen. Diese habe ich schon mit den Labels 2-11 untereinandergereiht und daneben die Buttons 2-11 je gemacht. Wenn man da jeweils drauf drückt, kommen links unten alle möglichen Informationen. Jetzt habe ich ein kleines Edit Fenster oben links gemacht und da drunter einen OK-Button(der erste Button). Da drunter ist dann ein Label, wo am Ende jeweils stehen soll, wieviel der Strom bei dem Anbieter und dem Verbrauch kostet, wenn man auf das Label des dazugehörigen Anbieters klickt und davor in das Edit Feld sein Jahresstromverbrauch eingegeben hat.
Jetzt hab ich aber überhaupt keine Ahnung, wie ich das Delphi sagen soll, dass es mit diesem erst nach dem Start eingefügtem Wert rechnen soll.
Wie ich das machen kann, dass die Anbieter nach günstigstem Preis für den jeweiligen Jahresstromverbrauch aufgelistet werden, hab ich aufgegen, deswegen wollte ich es zumindest so hinkriegen, dass man selber gucken kann, wieviel man bei welchem Anbieter bezahlen muss.
Moderiert von Narses: 2. Frage entfernt.
Zuletzt bearbeitet von wayne123 am So 03.10.10 20:12, insgesamt 1-mal bearbeitet
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Fr 01.10.10 21:33
Hi und  im Forum!
Ich empfehle Dir dazu erstmal die Basics anzueignen.
Siehe:
o Delphi-Wikibook
o Christians Crashkurs
Damit alleine sollte bereits einiges klarer werden.
Beste Grüße,
Marc
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 01.10.10 22:46
Moin und  im Forum!
Bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Richtlinien:
| 1.2 Beiträge: | | Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...] |
Einfach oben bei Deinem ersten Beitrag auf  oder  klicken und den Titel ändern. Danke Dir!
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
iterion
      
Beiträge: 21
Erhaltene Danke: 2
Win XP ,Suse 11.3
Delphi 7
|
Verfasst: Sa 02.10.10 05:56
Bitte aendere deinen Titel, ich bin auch nur hier gestolpert  ,
wenn ich das richtig verstehe, moechtest du rechnen : KWJahr*Preis und das im unteren fenster anzeigen.
Must nur in das OnClick event des buttons schreiben:
label12 waere dein ergebnis und edit12.text enthaelt den vom benutzer angegebenen jahresverbrauch,das ginge so:
Delphi-Quelltext 1:
| label12.caption:=inttostr(Strtoint(edit1.text)*PreisproKWH); |
Ansonsten kannste dir mal die Delphi Hilfe ansehen, und ein paar beispiele runterladen und veraendern, so habe ich das auch gelernt. X).
Viel Spass beim Lernen
|
|
wayne123 
      
Beiträge: 52
|
Verfasst: So 03.10.10 20:18
Bis dorthin hab ich es jetzt geschafft. Wenn man das programm jetzt startet, muss man seinen jahresverbrauch angeben und kann dann auf eins der Label mit dem jeweiligem Stromanbieter klicken, wodurch dann in immer dem gleichem Label der Preis angezeigt wird. Jetzt wollte ich das so machen, dass wenn man den verbrauch eingegeben hat, auf einen button dadrunter klicken kann und dann der billigste Preis mit dem Anbieter drüber angezeigt wird. Jetzt weiß ich aber nicht, wie das gehen soll, da die Preise bei mir ja erst ausgerechnet werden, wenn man auf den jeweiligen Anbieter klickt.
--- Moderiert von Narses: Beiträge zusammengefasst---
ok, ich merke langsam, dass ich ,wenn ich etwas überlege, auch selber auf das alles komme. Jetzt weiß ich nur noch eine kleine Sache nicht.
if Preis1 < Preis2 und Preis3
Wie krieg ich das und in Delphi hin?
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 03.10.10 21:32
|
|
wayne123 
      
Beiträge: 52
|
Verfasst: So 03.10.10 21:37
und das kann man nicht irgendwie kürzer machen? denn das will ich mit 10 preisen machen und auch noch
if preis 2 < preis3 und preis4
und soweiter.
|
|
Tranx
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: So 03.10.10 21:39
Ich hoffe, ich habe das Ziel des Ganzen ein wenig verstanden:
Du hast 10 Stromanbieter mit ihren Preisen irgendwo gespeichert. Über die Labels rufst Du deren Informationen ab und über einen Button und Deinen - in einem Edit-Feld eingegebenen Strombedarf - bekommst Du dann den Gesamtpreis.
Wenn das so ist, wäre es doch eher sinnvoll, mit einer Combobox zu arbeiten, in der Du die Stromversorgernamen speicherst. Dann brauchst Du noch eine Listbox mit den Preisdaten, oder - noch besser - ein Stringgrid mit den Preisdaten - in gleicher Reihenfolge. Und dann brauchst Du ja nur noch den Stromversorger aussuchen und den Preis ausrechnen.
Aufbau der Daten im Stringgrid (sgStrompreise):
Spalte
0 1 2
0 Name Grundgebühr Strompreis/kWh
1 EON 19,95 0,1
2 RWE 21,21 0,08
..
(Daten nur Dummies)
Dann hast Du in der Combobox (cbVersorger):
EON
RWE
Wenn Du einen Stromversorger in der Combobox auswählst, wird der Preis dann wie folgt berechnet und aus den Stromdaten aus dem Editfeld (eKWh) in einem Editfeld (eKosten) ausgegeben:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| function VerbrauchsKosten(Gebuehr, KWPreis, KWh : extended) : extended; begin result := KWPreis*KWh+Gebuehr*12; end;
procedure cbVersorgerClick(Sender : TObject); var n : integer; Gebuehr, KWPreis, KWh, Kosten : extended; begin n := cbVersorger.ItemIndex; if n>-1 then begin KWh := StrToFloat(eKWh.Text); Gebuehr := StrToFloat(sgStrompreise.Cells[1,n+1]); KWPreis := StrToFloat(sgStrompreise.Cells[2,n+1]); Kosten := Verbrauchskosten(Gebuehr, KWPreis, KWh); eKosten.Text := FormatFloat('#.###,#0',Kosten); end; end; |
Ich hoffe, Dir etwas geholfen zu haben. So benötigst Du wirklich nur 4 Objekte:
2 Editfelder, 1 Combobox und 1 Stringgrid
Diese o.a. Prozedur kannst Du auch als Change-Prozedur des Editfeldes eKWh nutzen. Alternativ zu einem Editfeld kannst Du auch ein Spineditfeld benutzen. Dann gibt es keine Fehleingaben. Und dann ist die Übergabe des kWh-Wertes einfacher (Alternative s.o.)
Um aus den gegebenen Daten den günstigsten Anbieter herauszufinden, kannst Du ja einfach in einer Schleife die einzelnen Anbieter durchlaufen und den günstigsten speichern.
Zuletzt bearbeitet von Tranx am So 03.10.10 21:44, insgesamt 1-mal bearbeitet
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 03.10.10 21:39
Geh doch einfach alle in einer Schleife durch. Die Abfrage hast du ja vermutlich (hoffentlich  ) schon in einer Schleife.
Da kannst du dir immer den Preis ausrechnen und wenn der günstiger als der bisher günstigste ist, dann merkst du dir den stattdessen. Am Ende hast du dann den günstigsten Anbieter.
|
|
wayne123 
      
Beiträge: 52
|
Verfasst: So 03.10.10 22:02
@Tranx
Danke für deine Mühe, aber ich hab jetzt schon soviel gemacht, da möchte ich nicht noch einmal von vorne anfangen.
Die Frage hört sich jetzt vllt. ein bisschen dumm an, aber wie genau mach ich so eine Schleife?
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: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281: 282: 283: 284: 285: 286: 287: 288: 289: 290: 291: 292: 293: 294: 295: 296: 297: 298: 299: 300: 301: 302: 303: 304: 305: 306: 307: 308: 309: 310: 311: 312: 313: 314: 315: 316: 317: 318: 319: 320: 321:
| unit UnitStrom;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; Button9: TButton; Button10: TButton; Button11: TButton; Button2: TButton; Label14: TLabel; Label15: TLabel; Button12: TButton; procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure Button10Click(Sender: TObject); procedure Button11Click(Sender: TObject); procedure Label2Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Label3Click(Sender: TObject); procedure Label4Click(Sender: TObject); procedure Label5Click(Sender: TObject); procedure Label6Click(Sender: TObject); procedure Label7Click(Sender: TObject); procedure Label8Click(Sender: TObject); procedure Label9Click(Sender: TObject); procedure Label10Click(Sender: TObject); procedure Label11Click(Sender: TObject); procedure Button12Click(Sender: TObject); private public end; var Form1: TForm1; Preis1, Preis2, Preis3, Preis4, Preis5 ,Preis6, Preis7, Preis8, Preis9, Preis10, Verbrauch: Real; implementation
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject); begin Label13.Caption := '200 € Kaution' + #10 +'12 Monate Vorauskasse' + #10 +'5500 kWh Paket' + #10 +'6 Monate Preisgarantie' + #10 +'200 € Neukundenbonus' + #10 +'' + #10 +'Kosten im Paket: 16 ct/kWh' + #10 +'Kosten bei Mehrverbrauch: 16,71 ct/kWh' end;
procedure TForm1.Button3Click(Sender: TObject); begin Label13.Caption := '200 € Kaution' + #10 +'12 Monate Vorauskasse' + #10 +'4000 kWh Paket' + #10 +'6 Monate Preisgarantie' + #10 +'200 € Neukundenbonus' + #10 +'' + #10 +'Kosten im Paket: 16 ct/kWh' + #10 +'Kosten bei Mehrverbrauch: 16,71 ct/kWh' end;
procedure TForm1.Button4Click(Sender: TObject); begin Label13.Caption := '12 Monate Vorauskasse' + #10 +'3 Monate Preisgarantie' + #10 +'750 kWh Neukundenbonus' + #10 +'160 € Neukundenbonus' + #10 +'Online-Kommunikation' + #10 +'' + #10 +'Kosten: 17,60 ct/kWh' end;
procedure TForm1.Button5Click(Sender: TObject); begin Label13.Caption := '50 € Kaution' + #10 +'3 Monate Vorauskasse' + #10 +'3 Monate Preisgarantie' + #10 +'450 kWh Neukundenbonus' + #10 +'150 € Neukundenbonus' + #10 +'' + #10 +'Kosten: 18,30 ct/kWh' end;
procedure TForm1.Button6Click(Sender: TObject); begin Label13.Caption := '12 Monate Preisfixierung' + #10 +'130 € Neukundenbonus' + #10 +'665 Frei-kWh für Neukunden' + #10 +'' + #10 +'Kosten: 19,21 ct/kWh' end;
procedure TForm1.Button7Click(Sender: TObject); begin Label13.Caption := '12 Monate Preisfixierung' + #10 +'130 € Neukundenbonus' + #10 +'665 Frei-kWh für Neukunden' + #10 +'ÖKO-STROM' + #10 +'' + #10 +'Kosten: 19,21 ct/kWh' end;
procedure TForm1.Button8Click(Sender: TObject); begin Label13.Caption := '12 Monate Vorauskasse' + #10 +'12 Monate Preisfixierung' + #10 +'70 € Ökobonus' + #10 +'200 € Neukundenbonus' + #10 +'70 € Bonus für 12 Monate' + #10 +'90 Frei-kWh Neukundenbonus' + #10 +'ÖKO-STROM' + #10 +'' + #10 +'Kosten: 17,58 ct/kWh' + #10 +'Kostenaufschlag(1 Jahr kostenlos):' + #10 +'+2 ct/kWh' end;
procedure TForm1.Button9Click(Sender: TObject); begin Label13.Caption := '6 Monate Vorauskasse' + #10 +'6 Monate Preisfixierung' + #10 +'200 € Neukundenbonus' + #10 +'' + #10 +'Kosten: 17,58 ct/kWh' end;
procedure TForm1.Button10Click(Sender: TObject); begin Label13.Caption := '12 Monate Vorauskasse' + #10 +'5500 kWh Paket' + #10 +'36 Monate Preisgarantie' + #10 +'302 € Neukundenbonus' + #10 +'' + #10 +'Kosten im Paket: 21,21 ct/kWh' + #10 +'Kosten bei Mehrverbrauch: 25,00 ct/kWh' end;
procedure TForm1.Button11Click(Sender: TObject); begin Label13.Caption := '12 Monate Vorauskasse' + #10 +'7500 kWh Paket' + #10 +'36 Monate Preisgarantie' + #10 +'320 € Neukundenbonus' + #10 +'' + #10 +'Kosten im Paket: 21,21 ct/kWh' + #10 +'Kosten bei Mehrverbrauch: 25,00 ct/kWh' end;
procedure TForm1.Label2Click(Sender: TObject); begin Verbrauch := StrToFloat(Edit1.Text); if Verbrauch > 5500 then Preis1 := (880 + ((Verbrauch - 5500)* 0.1671)) -108.08 else Preis1 := 771.92; Label12.Caption := FloatToStr(Preis1) + '€' end;
procedure TForm1.Button1Click(Sender: TObject); begin Label12.Caption := ''; Edit1.Text := ''; Edit1.SetFocus; end;
procedure TForm1.Label3Click(Sender: TObject); begin Verbrauch := StrToFloat(Edit1.Text); if Verbrauch > 4000 then Preis2 := (640 + ((Verbrauch - 4000)* 0.1671)) - 108.08 else Preis2 := 531.92; Label12.Caption := FloatToStr(Preis2) + '€' end;
procedure TForm1.Label4Click(Sender: TObject); begin Verbrauch := StrToFloat(Edit1.Text); if Verbrauch > 750 then Preis3 := ((Verbrauch - 750)* 0.1760) - 62.8 else Preis3 := 0; Label12.Caption := FloatToStr(Preis3) + '€' end;
procedure TForm1.Label5Click(Sender: TObject); begin Verbrauch := StrToFloat(Edit1.Text); if Verbrauch > 450 then Preis4 := ((Verbrauch - 450)* 0.183) - 42 else Preis4 := 0; Label12.Caption := FloatToStr(Preis4) + '€' end;
procedure TForm1.Label6Click(Sender: TObject); begin Verbrauch := StrToFloat(Edit1.Text); if Verbrauch > 665 then Preis5 := ((Verbrauch - 665)* 0.1921) - 43.84 else Preis5 := 0; Label12.Caption := FloatToStr(Preis5) + '€' end;
procedure TForm1.Label7Click(Sender: TObject); begin Verbrauch := StrToFloat(Edit1.Text); if Verbrauch > 665 then Preis6 := ((Verbrauch - 665)* 0.1921) - 43.36 else Preis6 := 0; Label12.Caption := FloatToStr(Preis6) + '€' end;
procedure TForm1.Label8Click(Sender: TObject); begin Verbrauch := StrToFloat(Edit1.Text); if Verbrauch > 90 then Preis7 := ((Verbrauch - 90)* 0.1758) + 13.12 else Preis7 := 0; Label12.Caption := FloatToStr(Preis7) + '€' end;
procedure TForm1.Label9Click(Sender: TObject); begin Verbrauch := StrToFloat(Edit1.Text); Preis8 := Verbrauch * 0.1758 - 1.4; Label12.Caption := FloatToStr(Preis8) + '€' end;
procedure TForm1.Label10Click(Sender: TObject); begin Verbrauch := StrToFloat(Edit1.Text); if Verbrauch > 5500 then Preis9 := 1166.55 + (Verbrauch - 5500)* 0.25 - 302 else Preis9 := 864.55; Label12.Caption := FloatToStr(Preis9) + '€' end;
procedure TForm1.Label11Click(Sender: TObject); begin Verbrauch := StrToFloat(Edit1.Text); if Verbrauch > 7500 then Preis10 := 1569 + (Verbrauch - 7500)* 0.24 - 320 else Preis10 := 1249; Label12.Caption := FloatToStr(Preis10) + '€' end;
procedure TForm1.Button12Click(Sender: TObject); begin Verbrauch := StrToFloat(Edit1.Text); if Verbrauch > 5500 then Preis1 := (880 + ((Verbrauch - 5500)* 0.1671)) -108.08 else Preis1 := 771.92; if Verbrauch > 4000 then Preis2 := (640 + ((Verbrauch - 4000)* 0.1671)) - 108.08 else Preis2 := 531.92; if Verbrauch > 750 then Preis3 := ((Verbrauch - 750)* 0.1760) - 62.8 else Preis3 := 0; if Verbrauch > 450 then Preis4 := ((Verbrauch - 450)* 0.183) - 42 else Preis4 := 0; if Verbrauch > 665 then Preis5 := ((Verbrauch - 665)* 0.1921) - 43.84 else Preis5 := 0; if Verbrauch > 665 then Preis6 := ((Verbrauch - 665)* 0.1921) - 43.36 else Preis6 := 0; if Verbrauch > 90 then Preis7 := ((Verbrauch - 90)* 0.1758) + 13.12 else Preis7 := 0; Preis8 := Verbrauch * 0.1758 - 1.4; if Verbrauch > 5500 then Preis9 := 1166.55 + (Verbrauch - 5500)* 0.25 - 302 else Preis9 := 864.55; if Verbrauch > 7500 then Preis10 := 1569 + (Verbrauch - 7500)* 0.24 - 320 else Preis10 := 1249;
if (Preis1 < Preis2) and (Preis1 < Preis3) then Label12.Caption := 'TelDaFax 1708 XL' + #10 + FloatToStr(Preis1) + '€'; if (Preis2 < Preis1) and (Preis2 < Preis3) then Label12.Caption := 'TelDaFax 1708 L' + #10 + FloatToStr(Preis2) + '€' end; end. |
Die Button12.Click Methode hab ich noch nicht ganz fertig gemacht, so wie jaenicke dass gemeint hat.
|
|
iterion
      
Beiträge: 21
Erhaltene Danke: 2
Win XP ,Suse 11.3
Delphi 7
|
Verfasst: So 03.10.10 23:02
Hey,
am besten kann man an einem beispiel lernen, habe mir n paar minuten genommen um ein beispiel zu schreiben, ich habe mal angenommen das die anbieter cent mitrechnen also hier die source als rar.
Die anbieterliste ist ein key value editor, und die info kommt in ein memo, kann aber schoener mit ein TRichEdit gemacht werden mit farbe und so, aber n beispiel ist halt ein beispiel.
[Hinzugef0252gt]
Vielleicht kannst du auch ein array bauen, mit einem eigenen record,der die daten der anbieter enthaelt, ist sicher einfacher als alles zu hardcoden, sonst ist es wirklich leichter mit dem taschenrechner Xlol;
Einloggen, um Attachments anzusehen!
Für diesen Beitrag haben gedankt: wayne123
|
|
wayne123 
      
Beiträge: 52
|
Verfasst: Mo 04.10.10 18:01
ok danke für deine hilfe iterion. jetzt hab ich nur noch ein problem. was ist, wenn die anbieter pakete und bonis usw. anbieten? also, dass die ersten 5500 kwh 50 cent billiger sind, man diese aber auch bezahlen muss, wenn man nur 4000 kwh verbraucht. das macht das ganze ja ein bisschen komplizierter.
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 04.10.10 19:33
Das musst du dann manuell im Code dazuschreiben und berechnen. 
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: Mo 04.10.10 19:45
Hi, mal so als kleine Anregung!
Wie würde man dies machen, wenn man kein PC benutzen würde?
Man würde 10 Blatt Papier nehmen, den jeweiligen Anbieter draufschreiben und dessen Werte.
Oder, Man erstellt sich eine Tabelle, Kopfzeile mit den Anbietern, drunter jeweils seine Werte und als letzte Zeile das Ergebnis. Mit einer Tabelle hätte man auch gleich noch die komplette Übersicht und ist erweiterbar
Und nun hat man ein Pc und Delphi und macht es sich manchmal schwerer als es sein muss
Mit zig Labels, Buttons usw.
Nur so als Anregung
Gruss Alf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
iterion
      
Beiträge: 21
Erhaltene Danke: 2
Win XP ,Suse 11.3
Delphi 7
|
Verfasst: Di 05.10.10 02:35
wayne123 hat folgendes geschrieben : | | ok danke für deine hilfe iterion. jetzt hab ich nur noch ein problem. was ist, wenn die anbieter pakete und bonis usw. anbieten? also, dass die ersten 5500 kwh 50 cent billiger sind, man diese aber auch bezahlen muss, wenn man nur 4000 kwh verbraucht. das macht das ganze ja ein bisschen komplizierter. |
Moin,
Ich schlage vor die daten der anbieter in einen record zu packen, etwa mit diesen daten
| Zitat: | Label13.Caption := '200 € Kaution'
+ #10 +'12 Monate Vorauskasse'
+ #10 +'5500 kWh Paket'
+ #10 +'6 Monate Preisgarantie'
+ #10 +'200 € Neukundenbonus'
+ #10 +''
+ #10 +'Kosten im Paket: 16 ct/kWh'
+ #10 +'Kosten bei Mehrverbrauch: 16,71 ct/kWh'
|
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| var type TAnbieterDaten = record kaution:integer; vorauskasse:integer; kwhPacket:real; NeuBonus:integer; MonatePG:integer; wtf:integer; PreisKwh:real; Mehrverbrauch:real; end;
Anbieterdaten=array[0..10]of TAnbieterDaten; |
Dann kannst du die daten entweder alle einzeln angeben (Viel arbeit!!!), oder eine schleife nehmen um sie aus einem Tinifile zu lesen, um die info dan anzuzeigen, brauchst du nur aufzurufen:
Delphi-Quelltext 1:
| if round(anbieterdaten[index].kwhpacket)< ergebnis then preis:=preis-anbieterdaten[index].kwhpacket; |
am besten legst du dir eine separate prozedur an, um die daten des anbieters ordentlich in das info fenster zu schreiben,als parameter gibst du dann am besten nur den index des anbieters und den fertigen preis an.
Zb.text:=inttostr( anbieterdaten[5].kaution)+ ' Monate Vorauskasse' ;
[Editiert]
Danke für den hinweis auf die Konventionen, ist echt leichter zu lesen 
Zuletzt bearbeitet von iterion am Di 05.10.10 06:16, insgesamt 1-mal bearbeitet
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 05.10.10 05:42
Für diesen Beitrag haben gedankt: iterion
|
|
iterion
      
Beiträge: 21
Erhaltene Danke: 2
Win XP ,Suse 11.3
Delphi 7
|
Verfasst: Di 05.10.10 06:12
| Zitat: | | Es entspricht nicht den Konventionen einen Namen eines Typs (hier den Record) mit einem R anfangen zu lassen. Das sollte ein T sein (bei Interfaces I, bei Exceptions E). |
Tut mir leid, bis eben wusste ich noch nichts ueber die konventionen  , das hat man leider davon wenn man alleine lernt, der record mag wohl ein typ sein, aber für war es eben ein Record, so wie ein Schaaf eben ein tier ist, genauer ist es ein Sauegetier  , egal, konventionen sind auch für besseres vertandnis da, also merke ich mir das mal  .
Hatte hier einen kleinen Hirn-Bug :
Delphi-Quelltext 1:
| if round(anbieterdaten[index].kwhpacket)< ergebnis then preis:=preis-anbieterdaten[index].kwhpacket; |
Ich glaub so ware es richtig:
Delphi-Quelltext 1: 2:
| if round(anbieterdaten[index].kwhpacket)< ergebnis then preis:=normalpreis; if round(anbieterdaten[index].kwhpacket)> ergebnis then preis:=anbieterdaten[index].kwhpacket+(preiskwh*(totalkwh-packetkw)); |
|
|
wayne123 
      
Beiträge: 52
|
Verfasst: Di 05.10.10 16:35
also ihr bringt mich jetzt immer ehr durcheinander. das einzige, was ich bisher hatte, waren button, edits, bisschen listboxen und checkboxen. hab mir schon einige hilfen durchgelesen, aber irgendwie glaub ich, dass ich das meiste selber herausfinden muss, denn das in den hilfen versteh ich meistens auch nicht.
@iterion
was bringt denn diese zeile aus deinem programm
if round(ergebnis)< round(Billig) then
und wieso ist billig bei dir = 99999 ?
und wieso ist billig = ergebnis, wenn dieses if zutrifft?
edit:
ok, habs verstanden. billig ist am anfang irgendeine ganz große zahl und dann wird das ergebnis der ersten zeile ausgerechnet und für billig eingesetzt. dann wird für jede nächste zeile geguckt, ob das ergebnis kleiner ist, als das bisherige kleinste, billig. wenn es kleiner ist, wird wiederum dieses ergebnis für billig eingesetzt und das so weiter bis zum ende. und anbieter keys(counter) heißt doch einfach, dass der anbieter aus der zeile genommen wird, wo das billigste ergebnis ist, oder?
hab ich das alles richtig verstanden?
|
|
iterion
      
Beiträge: 21
Erhaltene Danke: 2
Win XP ,Suse 11.3
Delphi 7
|
Verfasst: Di 05.10.10 22:09
Tut mir leid :\) , hatte es besser erklaren sollen, aber wenn man selber drauf kommt ist es meistens sowieso besser verstanden,
programieren ist macnchmal nicht leich, noch dazu wenn´s darauf ankommt dem computer arbeit zu sparen, damit es schneller geht,
sei froh das Computer nicht denken koennen, sonst haetten wir keine arbeit
Aber kopf hoch, irgendwie schaffst du das dann doch, spaeter  man sich einen ab wie leicht das eigentlich war,
MFG
Iterion
|
|
wayne123 
      
Beiträge: 52
|
Verfasst: Di 05.10.10 22:32
ja gut, ich bin dann ja auch nach einiger zeit selber drauf gekommen. aber sind denn die schlüsse, die ich über die procedure gezogen habe, auch richtig?
wenn du das in ein paar min. gemacht hast und ich ca. 10 stunden gebraucht habe um irgendwas viel umständlicheres zu machen, dann kann ich das schon verstehen, dass man später drüber lacht, wie einfach das doch war.
|
|
|