Autor |
Beitrag |
Xearox
      
Beiträge: 260
Erhaltene Danke: 3
|
Verfasst: Mi 13.01.10 18:45
Hallo Leute, ich poste euch jetzt mal meinen gesamten Source Code...
Ich möchte euch bitten, wenn ihr die Zeit dafür habt, mir ein paar Tipps, hilfen oder kommentare zu geben,
wie ich den Code besser machen kann, bzw. wie ich den ambesten Umschreiben kann...
Es handelt sich um ein Project, welches ich schon öffentlich bei Evil Empire(Browsergame)
angekündigt habe, und auch von einigen Intressenten angeschaut wurde...laut meinem Server...
So nun hier der Code:
Form Als Text Form:
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: 322: 323: 324: 325: 326: 327: 328: 329: 330: 331: 332: 333: 334: 335: 336: 337: 338: 339: 340: 341: 342: 343: 344: 345: 346: 347: 348: 349: 350: 351: 352: 353: 354: 355: 356: 357: 358: 359: 360: 361: 362: 363: 364: 365: 366: 367: 368: 369: 370: 371: 372: 373: 374: 375: 376: 377: 378: 379: 380: 381: 382: 383: 384: 385: 386: 387: 388: 389: 390: 391: 392: 393: 394: 395: 396: 397: 398: 399: 400: 401: 402: 403: 404: 405: 406: 407: 408: 409: 410: 411: 412: 413: 414: 415: 416: 417: 418: 419: 420: 421: 422:
| object Form1: TForm1 Left = 0 Top = 0 BorderIcons = [] Caption = 'Baukosten und Produktions Rechner' ClientHeight = 615 ClientWidth = 852 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object Label1: TLabel Left = 8 Top = 0 Width = 838 Height = 41 Alignment = taCenter AutoSize = False Caption = 'Baukosten bei Evil-Empire Rechner U2' Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -33 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False end object Label2: TLabel Left = 276 Top = 47 Width = 41 Height = 19 Caption = 'Metall' Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -16 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False end object Label3: TLabel Left = 372 Top = 47 Width = 47 Height = 19 Caption = 'Kristall' Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -16 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False end object Label4: TLabel Left = 468 Top = 47 Width = 62 Height = 19 Caption = 'Zivilisten' Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -16 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False end object Label7: TLabel Left = 234 Top = 47 Width = 36 Height = 19 Caption = 'Stufe' Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -16 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False end object Label5: TLabel Left = 564 Top = 47 Width = 61 Height = 19 Caption = 'Soldaten' Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -16 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False end object Label8: TLabel Left = 660 Top = 47 Width = 87 Height = 19 Caption = 'Lagermenge' Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -16 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False end object Label6: TLabel Left = 756 Top = 47 Width = 77 Height = 19 Caption = 'Produktion' Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -16 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False end object MMetKosten: TMemo Left = 276 Top = 72 Width = 90 Height = 540 ReadOnly = True TabOrder = 0 end object MKrisKosten: TMemo Left = 372 Top = 72 Width = 90 Height = 540 ReadOnly = True TabOrder = 1 end object MZiviKosten: TMemo Left = 468 Top = 72 Width = 90 Height = 540 ReadOnly = True TabOrder = 2 end object MStufe: TMemo Left = 240 Top = 72 Width = 30 Height = 540 ReadOnly = True TabOrder = 3 end object Button1: TButton Left = 48 Top = 312 Width = 121 Height = 25 Caption = 'Anzeigen' TabOrder = 4 OnClick = Button1Click end object MSoldisKosten: TMemo Left = 564 Top = 72 Width = 90 Height = 540 ReadOnly = True TabOrder = 5 end object BClose: TButton Left = 48 Top = 367 Width = 121 Height = 25 Caption = 'Programm Beenden' TabOrder = 6 OnClick = BCloseClick end object MLager: TMemo Left = 660 Top = 72 Width = 90 Height = 540 ReadOnly = True TabOrder = 7 end object Button2: TButton Left = 48 Top = 336 Width = 121 Height = 25 Caption = 'Produktion' Enabled = False TabOrder = 8 end object RadioGroup1: TRadioGroup Left = 8 Top = 47 Width = 220 Height = 259 Caption = 'Geb'#228'ude Auswahl' TabOrder = 9 end object RMetMine: TRadioButton Left = 14 Top = 72 Width = 113 Height = 17 Caption = 'Metallmine' TabOrder = 10 end object RKrisMine: TRadioButton Left = 14 Top = 95 Width = 113 Height = 17 Caption = 'Kristallmine' TabOrder = 11 end object RAntiFabrik: TRadioButton Left = 14 Top = 118 Width = 113 Height = 17 Caption = 'Antimateriefabrik' TabOrder = 12 end object RMetLager: TRadioButton Left = 14 Top = 141 Width = 113 Height = 17 Caption = 'Metalllager' TabOrder = 13 end object RKrisLager: TRadioButton Left = 14 Top = 164 Width = 113 Height = 17 Caption = 'Kristalllager' TabOrder = 14 end object RAntiLager: TRadioButton Left = 14 Top = 187 Width = 113 Height = 17 Caption = 'Antimaterielager' TabOrder = 15 end object RWohnraum: TRadioButton Left = 14 Top = 210 Width = 113 Height = 17 Caption = 'Wohnraum' TabOrder = 16 end object RKaserne: TRadioButton Left = 14 Top = 233 Width = 113 Height = 17 Caption = 'Kaserne' TabOrder = 17 end object RForschungszentrum: TRadioButton Left = 14 Top = 256 Width = 113 Height = 17 Caption = 'Forschungszentrum' TabOrder = 18 end object RRaumhafen: TRadioButton Left = 14 Top = 279 Width = 113 Height = 17 Caption = 'Raumhafen' TabOrder = 19 end object RRuestungswerke: TRadioButton Left = 125 Top = 72 Width = 100 Height = 17 Caption = 'R'#252'stungswerke' TabOrder = 20 end object RHandelszentrum: TRadioButton Left = 125 Top = 95 Width = 100 Height = 17 Caption = 'Handelszentrum' TabOrder = 21 end object RMilizHQ: TRadioButton Left = 125 Top = 118 Width = 100 Height = 17 Caption = 'Milizhaptquartier' TabOrder = 22 end object ROffiziersschule: TRadioButton Left = 125 Top = 141 Width = 100 Height = 17 Caption = 'Offiziesschule' TabOrder = 23 end object RSensoren: TRadioButton Left = 125 Top = 164 Width = 100 Height = 17 Caption = 'Sensoren' TabOrder = 24 end object RKlontanks: TRadioButton Left = 125 Top = 187 Width = 100 Height = 17 Caption = 'Klontanks' TabOrder = 25 end object RMateriekonverter: TRadioButton Left = 125 Top = 210 Width = 100 Height = 17 Caption = 'Materiekonverter' TabOrder = 26 end object RRoboterwerkstatt: TRadioButton Left = 125 Top = 233 Width = 100 Height = 17 Caption = 'Roboterwerkstatt' TabOrder = 27 end object RSprungtor: TRadioButton Left = 125 Top = 256 Width = 100 Height = 17 Caption = 'Sprungtor' TabOrder = 28 end object RadioGroup2: TRadioGroup Left = 2 Top = 440 Width = 97 Height = 161 Caption = 'Planeten Klasse' TabOrder = 29 end object RadioButton1: TRadioButton Left = 8 Top = 456 Width = 80 Height = 17 Caption = 'A' TabOrder = 30 end object RadioButton2: TRadioButton Left = 8 Top = 479 Width = 80 Height = 17 Caption = 'B' TabOrder = 31 end object RadioButton3: TRadioButton Left = 8 Top = 502 Width = 80 Height = 17 Caption = 'C' TabOrder = 32 end object RadioButton4: TRadioButton Left = 8 Top = 525 Width = 80 Height = 17 Caption = 'D' TabOrder = 33 end object RadioButton5: TRadioButton Left = 8 Top = 548 Width = 80 Height = 17 Caption = 'E' TabOrder = 34 end object RadioButton6: TRadioButton Left = 8 Top = 571 Width = 80 Height = 17 Caption = 'F' TabOrder = 35 end object MProd: TMemo Left = 756 Top = 72 Width = 90 Height = 540 ReadOnly = True TabOrder = 36 end end |
und nun mein gesamter Source Code
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: 322: 323: 324: 325: 326: 327: 328: 329: 330: 331: 332: 333: 334: 335: 336: 337: 338: 339: 340: 341: 342: 343: 344: 345: 346: 347: 348: 349: 350: 351: 352: 353: 354: 355: 356: 357: 358: 359: 360: 361: 362: 363: 364: 365: 366: 367: 368: 369: 370: 371: 372: 373: 374: 375: 376: 377: 378: 379: 380: 381: 382: 383: 384: 385: 386: 387: 388: 389: 390: 391: 392: 393: 394: 395: 396: 397: 398: 399: 400: 401: 402: 403: 404: 405: 406: 407: 408: 409: 410: 411: 412: 413: 414: 415: 416: 417: 418: 419: 420: 421: 422: 423: 424: 425: 426: 427: 428: 429: 430: 431: 432: 433: 434: 435: 436: 437: 438: 439: 440: 441: 442: 443: 444: 445: 446: 447: 448: 449: 450: 451: 452: 453: 454: 455: 456: 457: 458: 459: 460: 461: 462: 463: 464: 465: 466: 467: 468: 469: 470: 471: 472:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, math, ExtCtrls;
type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; MMetKosten: TMemo; MKrisKosten: TMemo; MZiviKosten: TMemo; Label7: TLabel; MStufe: TMemo; Button1: TButton; MSoldisKosten: TMemo; Label5: TLabel; BClose: TButton; Label8: TLabel; MLager: TMemo; Button2: TButton; RadioGroup1: TRadioGroup; RMetMine: TRadioButton; RKrisMine: TRadioButton; RAntiFabrik: TRadioButton; RMetLager: TRadioButton; RKrisLager: TRadioButton; RAntiLager: TRadioButton; RWohnraum: TRadioButton; RKaserne: TRadioButton; RForschungszentrum: TRadioButton; RRaumhafen: TRadioButton; RRuestungswerke: TRadioButton; RHandelszentrum: TRadioButton; RMilizHQ: TRadioButton; ROffiziersschule: TRadioButton; RSensoren: TRadioButton; RKlontanks: TRadioButton; RMateriekonverter: TRadioButton; RRoboterwerkstatt: TRadioButton; RSprungtor: TRadioButton; RadioGroup2: TRadioGroup; RadioButton1: TRadioButton; RadioButton2: TRadioButton; RadioButton3: TRadioButton; RadioButton4: TRadioButton; RadioButton5: TRadioButton; RadioButton6: TRadioButton; Label6: TLabel; MProd: TMemo; procedure Button1Click(Sender: TObject); procedure StufeAnzeigen; procedure Baukosten; procedure MemoLeeren; procedure BuildingChange; procedure BCloseClick(Sender: TObject); private public end;
var Form1: TForm1; BuildingChange:Boolean; RessChangeMet:double; RessChangeKris:double; RessChangeZivis:double; RessChangeSoldis:double; LagerChange:double; Metall,Kristall,Zivis,Soldis,Lager:double; const Stufe40=40; MMMetall=125; MMKristall=12; MMZivis=50; MMSoldis=0; MMLager=0; KMMetall=10; KMKristall=100; KMZivis=75; KMSoldis=0; KMLager=0; AFMetall=25; AFKristall=125; AFZivis=100; AFSoldis=0; AFLager=0; MLMetall=25; MLKristall=12; MLZivis=12; MLSoldis=0; MLLager=5000; KLMetall=25; KLKristall=12; KLZivis=12; KLSoldis=0; KLLager=5000; ALMetall=25; ALKristall=37; ALZivis=25; ALSoldis=0; ALLager=5000; WMetall=75; WKristall=25; WZivis=12; WSoldis=0; WLager=5000; KMetall=250; KKristall=100; KZivis=125; KSoldis=0; KLager=500; FMetall=125; FKristall=400; FZivis=250; FSoldis=0; FLager=0; RaMetall=375; RaKristall=250; RaZivis=100; RaSoldis=37; RaLager=0; RuMetall=250; RuKristall=125; RuZivis=125; RuSoldis=50; RuLager=0; HMetall=100; HKristall=50; HZivis=250; HSoldis=0; HLager=0; MHQMetall=375; MHQKristall=125; MHQZivis=1250; MHQSoldis=50; MHQLager=0; OMetall=3750; OKristall=3750; OZivis=2500; OSoldis=5000; OLager=0; SMetall=2500; SKristall=7500; SZivis=2500; SSoldis=1250; SLager=0; KTMetall=375; KTKristall=500; KTZivis=125; KTSoldis=0; KTLager=0; MaMetall=1250; MaKristall=2500; MaZivis=2000; MaSoldis=0; MaLager=0; RoMetall=3750; RoKristall=7500; RoZivis=2500; RoSoldis=0; RoLager=0; SpMetall=500; SpKristall=250; SpZivis=125; SPSoldis=25; SPLager=0;
implementation
{$R *.dfm}
procedure TForm1.MemoLeeren; begin MMetKosten.Text:=(''); MKrisKosten.Text:=(''); MZiviKosten.Text:=(''); MStufe.Text:=(''); MSoldisKosten.Text:=(''); MLager.Text:=(''); end;
procedure TForm1.Baukosten; var MetKosten,KrisKosten,ZiviKosten,SoldisKosten,Lagermenge:double; kosten:integer; Stufe:integer; I:integer; MetKostenStr:String; KrisKostenStr:String; ZiviKostenStr:string; SoldisKostenStr:String; LagerStr:String;
begin Stufe:=1; MetKosten:=RessChangeMet; KrisKosten:=RessChangeKris; ZiviKosten:=RessChangeZivis; SoldisKosten:=RessChangeSoldis; Lager:=LagerChange; Metall:=RessChangeMet; Kristall:=RessChangeKris; Zivis:=RessChangeZivis; Soldis:=RessChangeSoldis; Lager:=LagerChange; MetKostenStr:=floattostr(RessChangeMet); KrisKostenStr:=floattostr(RessChangeKris); ZiviKostenStr:=floattostr(RessChangeZivis); SoldisKostenStr:=floattostr(RessChangeSoldis); LagerStr:=floattostr(LagerChange); MMetKosten.Text:=MMetKosten.Text+MetKostenStr+#13#10; MKrisKosten.Text:=MKrisKosten.Text+KrisKostenStr+#13#10; MZiviKosten.Text:=MZiviKosten.Text+ZiviKostenStr+#13#10; MSoldisKosten.Text:=MSoldisKosten.Text+SoldisKostenStr+#13#10; MLager.Text:=MLager.Text+LagerStr+#13#10; for Stufe:=1 to 39 do begin MetKosten:=Trunc(Metall)*Trunc((Stufe+1)*Power(1.5,Stufe)); MetKostenStr:=floattostr(metkosten); MMetKosten.Text:=MMetKosten.Text+MetKostenStr+#13#10; end; for Stufe:=1 to 39 do begin KrisKosten:=Trunc(Kristall)*Trunc((Stufe+1)*Power(1.5,Stufe)); KrisKostenStr:=floattostr(Kriskosten); MKrisKosten.Text:=MKrisKosten.Text+KrisKostenStr+#13#10; end; for Stufe:=1 to 39 do begin ZiviKosten:=Trunc(Zivis)*Trunc((Stufe+1)*Power(1.5,Stufe)); ZiviKostenStr:=floattostr(ZiviKosten); MZiviKosten.Text:=MZiviKosten.Text+ZiviKostenStr+#13#10; end; for Stufe:=1 to 39 do begin SoldisKosten:=Trunc(Soldis)*Trunc((Stufe+1)*Power(1.5,Stufe)); SoldisKostenStr:=floattostr(SoldisKosten); MSoldisKosten.Text:=MSoldisKosten.Text+SoldisKostenStr+#13#10; end; for Stufe:=1 to 39 do begin Lagermenge:=Trunc(Lager)*Trunc((Stufe+1)*Power(1.5,Stufe)); LagerStr:=floattostr(Lagermenge); MLager.Text:=MLager.Text+LagerStr+#13#10; end;
end;
procedure TForm1.StufeAnzeigen; var I:integer; Anzahl:integer; AnzahlStr:string;
begin Anzahl:=0; for I := 0 to Stufe40 - 1 do begin Anzahl:=Anzahl+1; AnzahlStr:=inttostr(Anzahl); MStufe.Text:=MStufe.Text+AnzahlStr+#13#10;
end; end;
procedure TForm1.BCloseClick(Sender: TObject); begin close; end;
procedure TForm1.BuildingChange; begin if RMetMine.Checked=true then begin RessChangeMet:=MMMetall; RessChangeKris:=MMKristall; RessChangeZivis:=MMZivis; RessChangeSoldis:=MMSoldis; LagerChange:=MMLager; end; if RKrisMine.Checked=true then begin RessChangeMet:=KMMetall; RessChangeKris:=KMKristall; RessChangeZivis:=KMZivis; RessChangeSoldis:=KMSoldis; LagerChange:=KMLager; end; if RAntiFabrik.Checked=true then begin RessChangeMet:=AFMetall; RessChangeKris:=AFKristall; RessChangeZivis:=AFZivis; RessChangeSoldis:=AFSoldis; LagerChange:=AFLager; end; if RMetLager.Checked=true then begin RessChangeMet:=MLMetall; RessChangeKris:=MLKristall; RessChangeZivis:=MLZivis; RessChangeSoldis:=MLSoldis; LagerChange:=MLLager; end; if RKrisLager.Checked=true then begin RessChangeMet:=KLMetall; RessChangeKris:=KLKristall; RessChangeZivis:=KLZivis; RessChangeSoldis:=KLSoldis; LagerChange:=KLLager; end; if RAntiLager.Checked=true then begin RessChangeMet:=ALMetall; RessChangeKris:=ALKristall; RessChangeZivis:=ALZivis; RessChangeSoldis:=ALSoldis; LagerChange:=ALLager; end; if RWohnraum.Checked=true then begin RessChangeMet:=WMetall; RessChangeKris:=WKristall; RessChangeZivis:=WZivis; RessChangeSoldis:=WSoldis; LagerChange:=WLager; end; if RKaserne.Checked=true then begin RessChangeMet:=KMetall; RessChangeKris:=KKristall; RessChangeZivis:=KZivis; RessChangeSoldis:=KSoldis; LagerChange:=KLager; end; if RForschungszentrum.Checked=true then begin RessChangeMet:=FMetall; RessChangeKris:=FKristall; RessChangeZivis:=FZivis; RessChangeSoldis:=FSoldis; LagerChange:=FLager; end; if RRaumhafen.Checked=true then begin RessChangeMet:=RaMetall; RessChangeKris:=RaKristall; RessChangeZivis:=RaZivis; RessChangeSoldis:=RaSoldis; LagerChange:=RaLager; end; if RRuestungswerke.Checked=true then begin RessChangeMet:=RuMetall; RessChangeKris:=RuKristall; RessChangeZivis:=RuZivis; RessChangeSoldis:=RuSoldis; LagerChange:=RuLager; end; if RHandelszentrum.Checked=true then begin RessChangeMet:=HMetall; RessChangeKris:=HKristall; RessChangeZivis:=HZivis; RessChangeSoldis:=HSoldis; LagerChange:=HLager; end; if RMilizHQ.Checked=true then begin RessChangeMet:=MHQMetall; RessChangeKris:=MHQKristall; RessChangeZivis:=MHQZivis; RessChangeSoldis:=MHQSoldis; LagerChange:=MHQLager; end; if ROffiziersschule.Checked=true then begin RessChangeMet:=OMetall; RessChangeKris:=OKristall; RessChangeZivis:=OZivis; RessChangeSoldis:=OSoldis; LagerChange:=OLager; end; if RSensoren.Checked=true then begin RessChangeMet:=SMetall; RessChangeKris:=SKristall; RessChangeZivis:=SZivis; RessChangeSoldis:=SSoldis; LagerChange:=SLager; end; if RKlontanks.Checked=true then begin RessChangeMet:=KTMetall; RessChangeKris:=KTKristall; RessChangeZivis:=KTZivis; RessChangeSoldis:=KTSoldis; LagerChange:=KTLager; end; if RMateriekonverter.Checked=true then begin RessChangeMet:=KMMetall; RessChangeKris:=KMKristall; RessChangeZivis:=KMZivis; RessChangeSoldis:=KMSoldis; LagerChange:=KMLager; end; if RRoboterwerkstatt.Checked=true then begin RessChangeMet:=RoMetall; RessChangeKris:=RoKristall; RessChangeZivis:=RoZivis; RessChangeSoldis:=RoSoldis; LagerChange:=RoLager; end; if RSprungtor.Checked=true then begin RessChangeMet:=SpMetall; RessChangeKris:=SpKristall; RessChangeZivis:=SpZivis; RessChangeSoldis:=SpSoldis; LagerChange:=SpLager; end;
end;
procedure TForm1.Button1Click(Sender: TObject); begin MemoLeeren; BuildingChange; StufeAnzeigen; Baukosten; end;
end. |
Moderiert von Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mi 13.01.2010 um 17:58
Zuletzt bearbeitet von Xearox am Mi 13.01.10 22:01, insgesamt 1-mal bearbeitet
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 13.01.10 18:59
Moin!
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!
Noch ein Hinweis: Bitte nur eine Frage pro Thread! Sollte das hier chaotisch werden, mache ich den Thread zu.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
rizla
      
Beiträge: 417
Erhaltene Danke: 2
XP
FPC mit Lazarus
|
Verfasst: Mi 13.01.10 19:20
Sind Radiobuttons nicht dafür da, dass man nur eine Möglichkeit auswählt?
Für alles andere sind doch Checkboxes da, oder irr ich?
Hab zwar keine Ahnung, was "Planeten Klassen" sind, aber mit
Delphi-Quelltext 1:
| chkGebaeude.enabled := (not chkPlanetenKlasse.checked); |
(wobei chk für Checkboxen steht - jedenfalls in meiner welt  )
in der chkPlanetenKlasseOnChange kann ich schon mal sicherstellen, dass das eine das andere ausschließt..
Hmm..
Aber es sieht wohl so aus, daß ich mir deine Source wohl selber kompilieren müsste, um überhaupt zu verstehen,
was wie zusammenhängt. Ein Screenie wär vllt. gar nicht so verkehrt...
:r:
_________________ if you have what they want - they'll find a way to take it (bruce sterling)
WOW - 10 JAHRE Mitglied beim Delphi-Forum. Wie die Zeit vergeht, Freunde.
|
|
Xearox 
      
Beiträge: 260
Erhaltene Danke: 3
|
Verfasst: Mi 13.01.10 22:08
@Narses, hoffe Topic ist besser und habe auch einen anderen thread auf gemacht...
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Do 14.01.10 07:26
Hab das mal kurz überflogen, vieleicht solltest du dir auch mal Lines von TMemo anschauen
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| MMetKosten.Text:=('');
Anzahl:=Anzahl+1;
if RAntiFabrik.Checked=true then |
|
|
baka0815
      
Beiträge: 489
Erhaltene Danke: 14
Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
|
Verfasst: Do 14.01.10 08:46
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Do 14.01.10 09:12
Ich habe es nur kurz überflogen.
Schau dir auch noch die Tipps der anderen User an.
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: 322: 323: 324: 325: 326: 327: 328: 329: 330: 331: 332: 333: 334: 335: 336: 337: 338: 339: 340: 341: 342: 343: 344: 345: 346: 347: 348: 349: 350: 351: 352: 353: 354: 355: 356: 357: 358: 359: 360: 361: 362: 363: 364: 365: 366: 367: 368: 369: 370: 371: 372: 373: 374: 375: 376: 377: 378: 379: 380: 381: 382: 383: 384: 385: 386: 387: 388: 389: 390: 391: 392: 393: 394: 395: 396: 397: 398: 399: 400: 401: 402: 403: 404: 405: 406: 407: 408: 409: 410: 411: 412: 413: 414: 415: 416: 417: 418: 419: 420: 421: 422: 423: 424: 425: 426: 427: 428: 429: 430: 431: 432: 433: 434: 435: 436: 437: 438: 439: 440: 441: 442: 443: 444: 445: 446: 447: 448: 449: 450: 451: 452: 453: 454: 455: 456: 457: 458: 459: 460: 461: 462: 463: 464: 465:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, math, ExtCtrls;
type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; MMetKosten: TMemo; MKrisKosten: TMemo; MZiviKosten: TMemo; Label7: TLabel; MStufe: TMemo; Button1: TButton; MSoldisKosten: TMemo; Label5: TLabel; BClose: TButton; Label8: TLabel; MLager: TMemo; Button2: TButton; RadioGroup1: TRadioGroup; RMetMine: TRadioButton; RKrisMine: TRadioButton; RAntiFabrik: TRadioButton; RMetLager: TRadioButton; RKrisLager: TRadioButton; RAntiLager: TRadioButton; RWohnraum: TRadioButton; RKaserne: TRadioButton; RForschungszentrum: TRadioButton; RRaumhafen: TRadioButton; RRuestungswerke: TRadioButton; RHandelszentrum: TRadioButton; RMilizHQ: TRadioButton; ROffiziersschule: TRadioButton; RSensoren: TRadioButton; RKlontanks: TRadioButton; RMateriekonverter: TRadioButton; RRoboterwerkstatt: TRadioButton; RSprungtor: TRadioButton; RadioGroup2: TRadioGroup; RadioButton1: TRadioButton; RadioButton2: TRadioButton; RadioButton3: TRadioButton; RadioButton4: TRadioButton; RadioButton5: TRadioButton; RadioButton6: TRadioButton; Label6: TLabel; MProd: TMemo; procedure Button1Click(Sender: TObject); procedure StufeAnzeigen; procedure Baukosten; procedure MemoLeeren; procedure BuildingChange; procedure BCloseClick(Sender: TObject); private public BuildingChange:Boolean; RessChangeMet:double; RessChangeKris:double; RessChangeZivis:double; RessChangeSoldis:double; LagerChange:double; Metall,Kristall,Zivis,Soldis,Lager:double; end;
var Form1: TForm1;
const Stufe40=40; MMMetall=125; MMKristall=12; MMZivis=50; MMSoldis=0; MMLager=0; KMMetall=10; KMKristall=100; KMZivis=75; KMSoldis=0; KMLager=0; AFMetall=25; AFKristall=125; AFZivis=100; AFSoldis=0; AFLager=0; MLMetall=25; MLKristall=12; MLZivis=12; MLSoldis=0; MLLager=5000; KLMetall=25; KLKristall=12; KLZivis=12; KLSoldis=0; KLLager=5000; ALMetall=25; ALKristall=37; ALZivis=25; ALSoldis=0; ALLager=5000; WMetall=75; WKristall=25; WZivis=12; WSoldis=0; WLager=5000; KMetall=250; KKristall=100; KZivis=125; KSoldis=0; KLager=500; FMetall=125; FKristall=400; FZivis=250; FSoldis=0; FLager=0; RaMetall=375; RaKristall=250; RaZivis=100; RaSoldis=37; RaLager=0; RuMetall=250; RuKristall=125; RuZivis=125; RuSoldis=50; RuLager=0; HMetall=100; HKristall=50; HZivis=250; HSoldis=0; HLager=0; MHQMetall=375; MHQKristall=125; MHQZivis=1250; MHQSoldis=50; MHQLager=0; OMetall=3750; OKristall=3750; OZivis=2500; OSoldis=5000; OLager=0; SMetall=2500; SKristall=7500; SZivis=2500; SSoldis=1250; SLager=0; KTMetall=375; KTKristall=500; KTZivis=125; KTSoldis=0; KTLager=0; MaMetall=1250; MaKristall=2500; MaZivis=2000; MaSoldis=0; MaLager=0; RoMetall=3750; RoKristall=7500; RoZivis=2500; RoSoldis=0; RoLager=0; SpMetall=500; SpKristall=250; SpZivis=125; SPSoldis=25; SPLager=0;
implementation
{$R *.dfm}
procedure TForm1.MemoLeeren; begin MMetKosten.Text:=(''); MKrisKosten.Text:=(''); MZiviKosten.Text:=(''); MStufe.Text:=(''); MSoldisKosten.Text:=(''); MLager.Text:=(''); end;
procedure TForm1.Baukosten; var MetKosten,KrisKosten,ZiviKosten,SoldisKosten,Lagermenge:double; kosten:integer; Stufe:integer; I:integer; MetKostenStr:String; KrisKostenStr:String; ZiviKostenStr:string; SoldisKostenStr:String; LagerStr:String;
begin Stufe:=1; MetKosten:=RessChangeMet; KrisKosten:=RessChangeKris; ZiviKosten:=RessChangeZivis; SoldisKosten:=RessChangeSoldis; Lager:=LagerChange; Metall:=RessChangeMet; Kristall:=RessChangeKris; Zivis:=RessChangeZivis; Soldis:=RessChangeSoldis; Lager:=LagerChange; MetKostenStr:=floattostr(RessChangeMet); KrisKostenStr:=floattostr(RessChangeKris); ZiviKostenStr:=floattostr(RessChangeZivis); SoldisKostenStr:=floattostr(RessChangeSoldis); LagerStr:=floattostr(LagerChange); MMetKosten.Text:=MMetKosten.Text+MetKostenStr+#13#10; MKrisKosten.Text:=MKrisKosten.Text+KrisKostenStr+#13#10; MZiviKosten.Text:=MZiviKosten.Text+ZiviKostenStr+#13#10; MSoldisKosten.Text:=MSoldisKosten.Text+SoldisKostenStr+#13#10; MLager.Text:=MLager.Text+LagerStr+#13#10;
for Stufe:=1 to 39 do begin MetKosten:=Trunc(Metall)*Trunc((Stufe+1)*Power(1.5,Stufe)); MetKostenStr:=floattostr(metkosten); MMetKosten.Text:=MMetKosten.Text+MetKostenStr+#13#10; KrisKosten:=Trunc(Kristall)*Trunc((Stufe+1)*Power(1.5,Stufe)); KrisKostenStr:=floattostr(Kriskosten); MKrisKosten.Text:=MKrisKosten.Text+KrisKostenStr+#13#10; ZiviKosten:=Trunc(Zivis)*Trunc((Stufe+1)*Power(1.5,Stufe)); ZiviKostenStr:=floattostr(ZiviKosten); MZiviKosten.Text:=MZiviKosten.Text+ZiviKostenStr+#13#10; SoldisKosten:=Trunc(Soldis)*Trunc((Stufe+1)*Power(1.5,Stufe)); SoldisKostenStr:=floattostr(SoldisKosten); MSoldisKosten.Text:=MSoldisKosten.Text+SoldisKostenStr+#13#10; Lagermenge:=Trunc(Lager)*Trunc((Stufe+1)*Power(1.5,Stufe)); LagerStr:=floattostr(Lagermenge); MLager.Text:=MLager.Text+LagerStr+#13#10; end; end;
procedure TForm1.StufeAnzeigen; var I:integer; Anzahl:integer; AnzahlStr:string;
begin Anzahl:=0; for I := 0 to Stufe40 - 1 do begin Anzahl:=Anzahl+1; AnzahlStr:=inttostr(Anzahl); MStufe.Text:=MStufe.Text+AnzahlStr+#13#10;
end; end;
procedure TForm1.BCloseClick(Sender: TObject); begin close; end;
procedure TForm1.BuildingChange; begin if RMetMine.Checked then begin RessChangeMet:=MMMetall; RessChangeKris:=MMKristall; RessChangeZivis:=MMZivis; RessChangeSoldis:=MMSoldis; LagerChange:=MMLager; end; if RKrisMine.Checked then begin RessChangeMet:=KMMetall; RessChangeKris:=KMKristall; RessChangeZivis:=KMZivis; RessChangeSoldis:=KMSoldis; LagerChange:=KMLager; end; if RAntiFabrik.Checked then begin RessChangeMet:=AFMetall; RessChangeKris:=AFKristall; RessChangeZivis:=AFZivis; RessChangeSoldis:=AFSoldis; LagerChange:=AFLager; end; if RMetLager.Checked then begin RessChangeMet:=MLMetall; RessChangeKris:=MLKristall; RessChangeZivis:=MLZivis; RessChangeSoldis:=MLSoldis; LagerChange:=MLLager; end; if RKrisLager.Checked then begin RessChangeMet:=KLMetall; RessChangeKris:=KLKristall; RessChangeZivis:=KLZivis; RessChangeSoldis:=KLSoldis; LagerChange:=KLLager; end; if RAntiLager.Checked then begin RessChangeMet:=ALMetall; RessChangeKris:=ALKristall; RessChangeZivis:=ALZivis; RessChangeSoldis:=ALSoldis; LagerChange:=ALLager; end; if RWohnraum.Checked then begin RessChangeMet:=WMetall; RessChangeKris:=WKristall; RessChangeZivis:=WZivis; RessChangeSoldis:=WSoldis; LagerChange:=WLager; end; if RKaserne.Checked then begin RessChangeMet:=KMetall; RessChangeKris:=KKristall; RessChangeZivis:=KZivis; RessChangeSoldis:=KSoldis; LagerChange:=KLager; end; if RForschungszentrum.Checked then begin RessChangeMet:=FMetall; RessChangeKris:=FKristall; RessChangeZivis:=FZivis; RessChangeSoldis:=FSoldis; LagerChange:=FLager; end; if RRaumhafen.Checked then begin RessChangeMet:=RaMetall; RessChangeKris:=RaKristall; RessChangeZivis:=RaZivis; RessChangeSoldis:=RaSoldis; LagerChange:=RaLager; end; if RRuestungswerke.Checked then begin RessChangeMet:=RuMetall; RessChangeKris:=RuKristall; RessChangeZivis:=RuZivis; RessChangeSoldis:=RuSoldis; LagerChange:=RuLager; end; if RHandelszentrum.Checked then begin RessChangeMet:=HMetall; RessChangeKris:=HKristall; RessChangeZivis:=HZivis; RessChangeSoldis:=HSoldis; LagerChange:=HLager; end; if RMilizHQ.Checked then begin RessChangeMet:=MHQMetall; RessChangeKris:=MHQKristall; RessChangeZivis:=MHQZivis; RessChangeSoldis:=MHQSoldis; LagerChange:=MHQLager; end; if ROffiziersschule.Checked then begin RessChangeMet:=OMetall; RessChangeKris:=OKristall; RessChangeZivis:=OZivis; RessChangeSoldis:=OSoldis; LagerChange:=OLager; end; if RSensoren.Checked then begin RessChangeMet:=SMetall; RessChangeKris:=SKristall; RessChangeZivis:=SZivis; RessChangeSoldis:=SSoldis; LagerChange:=SLager; end; if RKlontanks.Checked then begin RessChangeMet:=KTMetall; RessChangeKris:=KTKristall; RessChangeZivis:=KTZivis; RessChangeSoldis:=KTSoldis; LagerChange:=KTLager; end; if RMateriekonverter.Checked then begin RessChangeMet:=KMMetall; RessChangeKris:=KMKristall; RessChangeZivis:=KMZivis; RessChangeSoldis:=KMSoldis; LagerChange:=KMLager; end; if RRoboterwerkstatt.Checked then begin RessChangeMet:=RoMetall; RessChangeKris:=RoKristall; RessChangeZivis:=RoZivis; RessChangeSoldis:=RoSoldis; LagerChange:=RoLager; end; if RSprungtor.Checked then begin RessChangeMet:=SpMetall; RessChangeKris:=SpKristall; RessChangeZivis:=SpZivis; RessChangeSoldis:=SpSoldis; LagerChange:=SpLager; end;
end;
procedure TForm1.Button1Click(Sender: TObject); begin MemoLeeren; BuildingChange; StufeAnzeigen; Baukosten; end;
end. |
|
|
Quake User
      
Beiträge: 159
|
Verfasst: Fr 15.01.10 01:57
1. Der Code einer Funktion sollte nur 1/2 - max 1 Seite lang sein. Du solltest Klassen von AUfgaben in einzelnen Funktionen (oder Proceduren) zusammenfassen. Zu begin könnte das bspw. eine "procerure init" sein.
2. wie schon von anderen Usern empfohlen, solltest Du statt der vielen Variablen, die sich zu einer Klasse zusammenfassen lassen, eine Klasse verwenden.
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Fr 15.01.10 02:49
Ich geb keine konstruktive Kritik ab sonder mal ein Lob:
Ich find es super das deine Codeformatierung so toll geklappt hat und das die Benennung der Variablen einwandfrei ist, was ich so auf den ersten Blick gesehen habe. Respekt!
Quelltextkommentare sind schon teilweise vorhanden, dürften aber denk ich noch mehr und erklärender werden.
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
Xearox 
      
Beiträge: 260
Erhaltene Danke: 3
|
Verfasst: Fr 15.01.10 06:12
rizla hat folgendes geschrieben : | Sind Radiobuttons nicht dafür da, dass man nur eine Möglichkeit auswählt?
Für alles andere sind doch Checkboxes da, oder irr ich?
Hab zwar keine Ahnung, was "Planeten Klassen" sind, aber mit
Delphi-Quelltext 1:
| chkGebaeude.enabled := (not chkPlanetenKlasse.checked); |
(wobei chk für Checkboxen steht - jedenfalls in meiner welt )
in der chkPlanetenKlasseOnChange kann ich schon mal sicherstellen, dass das eine das andere ausschließt..
Hmm..
Aber es sieht wohl so aus, daß ich mir deine Source wohl selber kompilieren müsste, um überhaupt zu verstehen,
was wie zusammenhängt. Ein Screenie wär vllt. gar nicht so verkehrt...
:r: |
Es gibt verschiedene Planeten Klassen.
Z.b. Werden bei einem A Planeten mehr Antimaterie Produktziert als bei den Anderen Planeten.
Bei einem B Planeten wird mehr Kristall produktziert.
Bei einem C Planeten wird mehr Kristall produktziert.
Bei einem D plani wird Kristall, Metall und Antimaterie in einem guten verhältnis Produktziert, aber weniger, als wenn man einen A,B oder C plani hat.
Ein E plani kann man vergessen, weil der eher was Positives hat...
Ein F plani hat die beste Geburtenrate, und man kann daher schneller Zivis produktzieren, denn um so mehr Zivis man ha, um so mehr werden pro stunde hergestellt...
|
|
Xearox 
      
Beiträge: 260
Erhaltene Danke: 3
|
Verfasst: Fr 15.01.10 10:35
baka0815 hat folgendes geschrieben : | Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| MMMetall=125; MMKristall=12; MMZivis=50; MMSoldis=0; MMLager=0; |
Da dies ja immer dasselbe, ich würde dir hier also irgend 'ne Struktur empfehlen (also entweder Klasse oder Record - in diesem Fall ist ein Record vermutlich ausreichend).
Delphi-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:
| type TDing = record Metall: Integer; Kristall: Integer; Zivis: Integer; Soldis: Integer; Lager: Integer; end;
var MetallMine, KristallMine: TDing;
begin MetallMine.Metall := 125; MetallMine.Kristall := 12; MetallMine.Zivis := 50; MetallMine.Soldis := 0; MetallMine.Lager := 0;
KristallMine.Metall := 10; KristallMine.Kristall := 100; KristallMine.Zivis := 75; KristallMine.Soldis := 0; KristallMine.Lager := 0; end; |
Sowas in der Art (ungetestet). |
Kann mir das jemand genauer erklären?
Kenne mich damit nicht aus...
bzw. was muss ich dafür nach lesen, um das zu lernen...
Oder wenn es geht, mir ein Bespiel, also ein komplettes beispiel aus meinem Code einfügen, wie ich am besten das mit dem Record einabaue und dieses auch weiter unten benutzen kann, da ich nicht wirklich druch steige, wie ich das mache
|
|
Lossy eX
      
Beiträge: 1048
Erhaltene Danke: 4
|
Verfasst: Fr 15.01.10 11:06
Also ich würde eher so etwas in der Art wie das da vorschlagen.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| type TDingTypes = (dtMM, dtKM, dtAF); TDing = record Metall: Integer; Kristall: Integer; Zivis: Integer; Soldis: Integer; Lager: Integer; end;
const DingConsts: array [TDingTypes] of TDing = ( (Metall: 125; Kristall: 12; Zivis: 50; Soldis: 0; Lager: 0; ), (Metall: 10; Kristall: 100; Zivis: 75; Soldis: 0; Lager: 0; ), (Metall: 25; Kristall: 125; Zivis: 100; Soldis: 0; Lager: 0; ) ); |
TDing und TDingTyes muss selbst noch umbenannt werden. Also in was passendes. TDingTypes gibt die unterschiedlichen Typen an die du hast. In DingConsts werden für jeden Typen die Konstanten hinterlegt. Dadurch kannst du die Konstanten recht einfach zusammenstampfen. Du musst natürlich TDingTypes und DingConts selbst noch erweitern.
Beim Zugriff darauf musst du nur noch den passenden Typen auswählen und dann mithilfe des Typens auf das Array zugreifen. Das könntest auch direkt mit dtMM machen.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| var Ding: TDingType; begin if RMetMine.Checked=true then Ding := dtMM else if RKrisMine.Checked=true then Ding := dtKM else if RAntiFabrik.Checked=true then Ding := dtAF;
RessChangeMet := DingConsts[Ding].Metall; RessChangeKris := DingConsts[Ding].Kristall; RessChangeZivis := DingConsts[Ding].Zivis; RessChangeSoldis := DingConsts[Ding].Soldis; |
_________________ Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
|
|
Xearox 
      
Beiträge: 260
Erhaltene Danke: 3
|
Verfasst: So 24.01.10 08:43
So, nun bin ich auch mal wieder zurück...
Ich habe mein Programm auf insgesamt 6 Units aufgeteilt...
Warum 6? Weil ich einige Lange Prozeduren habe, und diese übersichtshalber in einer eigenen Unit verfrachtet habe...
Hier nun aber die Unit mit den Variabeln und Konstanten...
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:
| unit Unit2;
interface
type MinenArrayType = Array [1..3, 1..5] of double; LagerArrayType = Array [1..4, 1..5] of double; PlaniArrayType = Array [1..6, 1..7] of double;
var MinenTyp : MinenArrayType; LagerTyp : LagerArrayType; PlaniTyp : PlaniArrayType;
const Stufe40=40;
KMetall=250; KKristall=100; KZivis=125; KSoldis=0; KLager=500; FMetall=125; FKristall=400; FZivis=250; FSoldis=0; FLager=0; RaMetall=375; RaKristall=250; RaZivis=100; RaSoldis=37; RaLager=0; RuMetall=250; RuKristall=125; RuZivis=125; RuSoldis=50; RuLager=0; HMetall=100; HKristall=50; HZivis=250; HSoldis=0; HLager=0; MHQMetall=375; MHQKristall=125; MHQZivis=1250; MHQSoldis=50; MHQLager=0; OMetall=3750; OKristall=3750; OZivis=2500; OSoldis=5000; OLager=0; SMetall=2500; SKristall=7500; SZivis=2500; SSoldis=1250; SLager=0; KTMetall=375; KTKristall=500; KTZivis=125; KTSoldis=0; KTLager=0; MaMetall=1250; MaKristall=2500; MaZivis=2000; MaSoldis=0; MaLager=0; RoMetall=3750; RoKristall=7500; RoZivis=2500; RoSoldis=0; RoLager=0; SpMetall=500; SpKristall=250; SpZivis=125; SPSoldis=25; SPLager=0;
var BuildingChange:Boolean; RessChangeMet:double; RessChangeKris:double; RessChangeZivis:double; RessChangeSoldis:double; BonusChange:double; MBonus,MBonusChange,KBonus,KBonusChange,ABonus,ABonusChange,ZBonus,ZBonusChange:Double; LagerChange:double; Metall,Kristall,Zivis,Soldis,Lager:double; Bonus:double; MetKosten,KrisKosten,ZiviKosten,SoldisKosten,Lagermenge,GesamtLager:double; MRessProd,KRessProd,ARessProd:double; kosten:integer; I:integer; MetKostenStr:String; KrisKostenStr:String; ZiviKostenStr:string; SoldisKostenStr:String; RessProdStr:string; LagerStr:String; MetProd,KrisProd,AntiProd:double;
implementation
begin
MinenTyp[1,1]:=125; MinenTyp[1,2]:=12; MinenTyp[1,3]:=50; MinenTyp[1,4]:=0; MinenTyp[1,5]:=0; MinenTyp[2,1]:=10; MinenTyp[2,2]:=100; MinenTyp[2,3]:=75; MinenTyp[2,4]:=0; MinenTyp[2,5]:=0; MinenTyp[3,1]:=25; MinenTyp[3,2]:=125; MinenTyp[3,3]:=100; MinenTyp[3,4]:=0; MinenTyp[3,5]:=0; LagerTyp[1,1]:=25; LagerTyp[1,2]:=12; LagerTyp[1,3]:=12; LagerTyp[1,4]:=0; LagerTyp[1,5]:=5000; LagerTyp[2,1]:=25; LagerTyp[2,2]:=12; LagerTyp[2,3]:=12; LagerTyp[2,4]:=0; LagerTyp[2,5]:=5000; LagerTyp[3,1]:=25; LagerTyp[3,2]:=37; LagerTyp[3,3]:=25; LagerTyp[3,4]:=0; LagerTyp[3,5]:=5000; LagerTyp[4,1]:=75; LagerTyp[4,2]:=25; LagerTyp[4,3]:=12; LagerTyp[4,4]:=0; LagerTyp[4,5]:=5000; PlaniTyp[1,1]:= 800; PlaniTyp[1,2]:= 500; PlaniTyp[1,3]:= 100; PlaniTyp[1,4]:= 80; PlaniTyp[1,5]:= 80; PlaniTyp[1,6]:= 80; PlaniTyp[1,7]:= 0; PlaniTyp[2,1]:= 800; PlaniTyp[2,2]:= 500; PlaniTyp[2,3]:=100; PlaniTyp[2,4]:= 100; PlaniTyp[2,5]:= 125; PlaniTyp[2,6]:= 100; PlaniTyp[2,7]:= 1; PlaniTyp[3,1]:=800; PlaniTyp[3,2]:= 500; PlaniTyp[3,3]:=100; PlaniTyp[3,4]:= 125; PlaniTyp[3,5]:= 100; PlaniTyp[3,6]:= 100; PlaniTyp[3,7]:= 0; PlaniTyp[4,1]:=800; PlaniTyp[4,2]:=500; PlaniTyp[4,3]:=100; PlaniTyp[4,4]:= 110; PlaniTyp[4,5]:= 110; PlaniTyp[4,6]:= 80; PlaniTyp[4,7]:= 2; PlaniTyp[5,1]:=800; PlaniTyp[5,2]:=500; PlaniTyp[5,3]:=100; PlaniTyp[5,4]:= 100; PlaniTyp[5,5]:= 100; PlaniTyp[5,6]:= 70; PlaniTyp[5,7]:= 3; PlaniTyp[6,1]:=800; PlaniTyp[6,2]:=500; PlaniTyp[6,3]:=100; PlaniTyp[6,4]:= 90; PlaniTyp[6,5]:= 90; PlaniTyp[6,6]:= 60; PlaniTyp[6,7]:= 5; end. |
Ist jedoch noch nicht ganz geändert...
Meine Frage ist jedoch, kann ich das so machen, oder kann ich das ganze noch kleiner machen?
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 24.01.10 11:41
Was die Konstanten angeht hat Lossy eX ja schon eine sehr viel kürzere und übersichtlichere Methode vorgeschlagen. Gleiches gilt für deine Arrays, das geht mit konstanten Arrays ebenfalls viel kürzer. Delphi-Quelltext 1: 2:
| const MyArray: array[0..3] of Integer = (1, 2, 3, 4); |
Globale Variablen sollte man vermeiden wann immer es geht, das bringt nur Unübersichtlichkeit und unnötige Fehlerquellen.
Xearox hat folgendes geschrieben : | Delphi-Quelltext 1: 2: 3: 4:
| procedure TForm1.BuildingChange; begin if RMetMine.Checked=true then begin | |
Solche Vergleiche mit True können ganz böse ins Auge gehen und sind auch vollkommen unlogisch...
Mehr dazu steht hier.
|
|
|