Einzelnen Beitrag anzeigen

Benutzerbild von 0x92
0x92

Registriert seit: 14. Feb 2014
6 Beiträge
 
#8

AW: Festes Array zur Laufzeit füllen

  Alt 8. Jul 2016, 10:17
[QUOTE=p80286;1342200]
Der Fehler lautete "[dcc32 Fehler] uMain.pas(22): E2072 Anzahl der Elemente (2) weicht von der Deklaration (26) ab"
Wenn ich die Fehlermeldung richtig interpretiere sollte es so eigentlich funktionieren:
Delphi-Quellcode:
const
  TestArray: array [1 .. 27, 1 .. 2] of String =
    (
    ('A', 'B','B'.....'C'),
    ('6', '12','12'....'18')
     );
Aber vielleicht ist ein Array of record doch die bessere Wahl?

Gruß
K-H
Fand die Lösung mit dem Array of Record am schönsten vom Zugriff her

Delphi-Quellcode:
unit uMain;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TMainForm = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    ResultMemo: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    procedure InitalizeEnglishGematriaArray;
    function CalculateValue(Str: String): Integer;
    function GetGematriaValuefromChar(Chr: Char): Integer;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

type
  TEnglishGematria = record
    Buchstabe: Char;
    Wert: Integer;
  end;

var
  MainForm: TMainForm;
  EnglishGematriaArray : Array[0..25] of TEnglishGematria;

implementation

{$R *.dfm}

procedure TMainForm.Button1Click(Sender: TObject);
begin
  CalculateValue(Edit1.Text);
end;

function TMainForm.CalculateValue(Str: String): Integer;
var
  Target: String;
  TargetLength: Integer;
  i: Integer;
  CharValue: Integer;
begin
  ResultMemo.Clear;
  CharValue := 0;
  Result := 0;

  Target := UpperCase(Str);
  TargetLength := Length(Target);

  for i := 1 to TargetLength do
  begin
    CharValue := GetGematriaValuefromChar(Target[i]);
    ResultMemo.Lines.Add(' ' + Target[i] + ' ' + IntToStr(CharValue));
    Result := Result + CharValue;
  end;

  Result := Result;
  ResultMemo.Lines.Add('+----------+');
  ResultMemo.Lines.Add(' ' + IntToStr(Result));
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
  InitalizeEnglishGematriaArray;
end;

function TMainForm.GetGematriaValuefromChar(Chr: Char): Integer;
var
  i: Integer;
begin
  if (Chr = #0) OR (Chr = '') OR (Chr = ' ') then
  begin
    Result := 0;
  end
  else
  begin
    for i := 0 to 26 do
      begin
        if Chr = EnglishGematriaArray[i].Buchstabe then
        begin
          Result := EnglishGematriaArray[i].Wert;
          Exit;
        end;
      end;
  end
end;

procedure TMainForm.InitalizeEnglishGematriaArray;
begin
  EnglishGematriaArray[0].Buchstabe := 'A';
  EnglishGematriaArray[0].Wert := 6;

  EnglishGematriaArray[1].Buchstabe := 'B';
  EnglishGematriaArray[1].Wert := 12;

  EnglishGematriaArray[2].Buchstabe := 'C';
  EnglishGematriaArray[2].Wert := 18;

  EnglishGematriaArray[3].Buchstabe := 'D';
  EnglishGematriaArray[3].Wert := 24;

  EnglishGematriaArray[4].Buchstabe := 'E';
  EnglishGematriaArray[4].Wert := 30;

  EnglishGematriaArray[5].Buchstabe := 'F';
  EnglishGematriaArray[5].Wert := 36;

  EnglishGematriaArray[6].Buchstabe := 'G';
  EnglishGematriaArray[6].Wert := 42;

  EnglishGematriaArray[7].Buchstabe := 'H';
  EnglishGematriaArray[7].Wert := 48;

  EnglishGematriaArray[8].Buchstabe := 'I';
  EnglishGematriaArray[8].Wert := 54;

  EnglishGematriaArray[9].Buchstabe := 'J';
  EnglishGematriaArray[9].Wert := 60;

  EnglishGematriaArray[10].Buchstabe := 'K';
  EnglishGematriaArray[10].Wert := 66;

  EnglishGematriaArray[11].Buchstabe := 'L';
  EnglishGematriaArray[11].Wert := 72;

  EnglishGematriaArray[12].Buchstabe := 'M';
  EnglishGematriaArray[12].Wert := 78;

  EnglishGematriaArray[13].Buchstabe := 'N';
  EnglishGematriaArray[13].Wert := 84;

  EnglishGematriaArray[14].Buchstabe := 'O';
  EnglishGematriaArray[14].Wert := 90;

  EnglishGematriaArray[15].Buchstabe := 'P';
  EnglishGematriaArray[15].Wert := 96;

  EnglishGematriaArray[16].Buchstabe := 'Q';
  EnglishGematriaArray[16].Wert := 102;

  EnglishGematriaArray[17].Buchstabe := 'R';
  EnglishGematriaArray[17].Wert := 108;

  EnglishGematriaArray[18].Buchstabe := 'S';
  EnglishGematriaArray[18].Wert := 114;

  EnglishGematriaArray[19].Buchstabe := 'T';
  EnglishGematriaArray[19].Wert := 120;

  EnglishGematriaArray[20].Buchstabe := 'U';
  EnglishGematriaArray[20].Wert := 126;

  EnglishGematriaArray[21].Buchstabe := 'V';
  EnglishGematriaArray[21].Wert := 134;

  EnglishGematriaArray[22].Buchstabe := 'W';
  EnglishGematriaArray[22].Wert := 138;

  EnglishGematriaArray[23].Buchstabe := 'X';
  EnglishGematriaArray[23].Wert := 144;

  EnglishGematriaArray[24].Buchstabe := 'Y';
  EnglishGematriaArray[24].Wert := 150;

  EnglishGematriaArray[25].Buchstabe := 'Z';
  EnglishGematriaArray[25].Wert := 156;
end;
  Mit Zitat antworten Zitat