Einzelnen Beitrag anzeigen

Benutzerbild von NoGAD
NoGAD

Registriert seit: 31. Jan 2006
Ort: Weimar
345 Beiträge
 
Delphi 10.4 Sydney
 
#19

AW: Variable erhöhen, wie es in php möglich ist (varx++)?

  Alt 6. Mär 2022, 14:45
Hier meine Idee der Umsetzung eines sich selbst erhöhenden Arrays, mit gleichzeitiger Zuweisung von Werten.

Delphi-Quellcode:

interface

type
  TMyAddResult = record
    MyResult: Boolean;
    MyIndex: Integer;
  end;

type
  TMyTippOfDayRecord = record
    Tipp: String;
    Info: String;
  end;

Type
  TMyTippOfDay = Array of TMyTippOfDayRecord;

  function Add(var aTippArray: TMyTippOfDay; aTipp, aInfo: String): TMyAddResult;

var
  ToDRecord: TMyTippOfDay;

implementation

function Add(var aTippArray: TMyTippOfDay; aTipp, aInfo: String): TMyAddResult;
var
  DummyIndex: Integer;
begin
  Dummyindex := 1;
  try
    try
      if Length(aTippArray) > 0 then
        DummyIndex := Succ(Length(aTippArray));

      SetLength(aTippArray, DummyIndex);
      aTippArray[Pred(DummyIndex)].Tipp := aTipp;
      aTippArray[Pred(DummyIndex)].Info := aInfo;
    finally
      Result.MyIndex := DummyIndeX;
      Result.MyResult := True;
    end;
  except
    Result.MyResult := False;
    Result.MyIndex := -1;
  end;

end;

initialization

if not Add(ToDRecord, 'Bla 1', 'Hallo 1').MyResult then
  ShowMessage('Ein Fehler trat auf.');
if not Add(ToDRecord, 'Bla 2', 'Hallo 2').MyResult then
  ShowMessage('Ein Fehler trat auf.');
if not Add(ToDRecord, 'Bla 3', 'Hallo 3').MyResult then
  ShowMessage('Ein Fehler trat auf.');
if not Add(ToDRecord, 'Bla 4', 'Hallo 4').MyResult then
  ShowMessage('Ein Fehler trat auf.');
Ein Zugriff später könnte dann wie folgt passieren:

Delphi-Quellcode:
var
  DummyX: Integer;
begin
  for DummyX := 0 to Pred(Length(ToDRecord)) do
    ShowMessage('Tipp: ' + ToDRecord[DummyX].Tipp + slinebreak+
                'Info: ' + ToDRecord[DummyX].Info);


Was ich noch schön fände, wäre, wenn function Add zu TMyTippOfDay gehören würde. Aber das geht scheinbar nur bei records.


Edit: Code wurde korrigiert.

LG
Mathias
Ich vergesse einfach zu viel.

Geändert von NoGAD ( 6. Mär 2022 um 15:25 Uhr) Grund: Fehler behoben
  Mit Zitat antworten Zitat