AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Festes Array zur Laufzeit füllen

Ein Thema von 0x92 · begonnen am 6. Jul 2016 · letzter Beitrag vom 9. Jul 2016
 
Benutzerbild von 0x92
0x92

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

AW: Festes Array zur Laufzeit füllen

  Alt 8. Jul 2016, 09: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
 


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 20:40 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-2025 by Thomas Breitkreuz