Einzelnen Beitrag anzeigen

Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.300 Beiträge
 
Delphi 12 Athens
 
#27

AW: Generics richtig verstanden?

  Alt 13. Mai 2018, 06:04
Moin...
Wenn ich
Delphi-Quellcode:
type
  TPair<TKey,TValue> = class // TKey. TValue type parameters
     FKey: TKey;
     FValue: TValue;
   end;
aufnehme und Key zu FKey und Value zu FValue ändere läuft es.
...diese Deklaration brauchst du nicht neu zu implementieren! Das Original tut´s auch.
Zitat:
TIIPair = TPair<Integer, Integer>;
bleibt da noch.
...das sind ja auch Typdeklarationen die nur TPair<xxx,xxx> repäsentieren...um im Quelltext Schreibarbeit zu sparen oder es übersichtlicher zu machen.
Zitat:
Es hängt jeweils beim .create mit dem Hinweis "nicht genügend wirkliche Parameter".
...wo genau?

Beispiele:
Delphi-Quellcode:
unit Form.Main;

interface

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

type
  TfoMain = class(TForm)
    btnPostCode: TButton;
    procedure btnPostCodeClick(Sender: TObject);
  private

  public

  end;

var
  foMain: TfoMain;

implementation

{$R *.dfm}

procedure TfoMain.btnPostCodeClick(Sender: TObject);
var
  Postleitzahlen: TDictionary<string, string>;
begin
  Postleitzahlen := TDictionary<string, string>.Create;
  try
    Postleitzahlen.Add('53639', 'Königswinter');
    Postleitzahlen.Add('53117', 'Bonn1');
    Postleitzahlen.Add('53111', 'Bonn');

    ShowMessage('Die Postleitzahl für 53639 ist');
    ShowMessage(Postleitzahlen['53639']);
  finally
    FreeAndNil(Postleitzahlen);
  end;
end;

end.
Delphi-Quellcode:
unit Form.Main;

interface

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

type
  TMyPostCodeDictionary = TDictionary<string, string>; // eigene Deklaration

  TfoMain = class(TForm)
    btnPostCode: TButton;
    procedure btnPostCodeClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    FMyPostCodeDictionary: TMyPostCodeDictionary;
  public

  end;

var
  foMain: TfoMain;

implementation

{$R *.dfm}

procedure TfoMain.FormCreate(Sender: TObject);
begin
  FMyPostCodeDictionary := TMyPostCodeDictionary.Create;
end;

procedure TfoMain.FormDestroy(Sender: TObject);
begin
  FMyPostCodeDictionary.Free;
end;

procedure TfoMain.btnPostCodeClick(Sender: TObject);
begin
  FMyPostCodeDictionary.Add('53639', 'Königswinter');
  FMyPostCodeDictionary.Add('53117', 'Bonn1');
  FMyPostCodeDictionary.Add('53111', 'Bonn');

  ShowMessage('Die Postleitzahl für 53639 ist');
  ShowMessage(FMyPostCodeDictionary['53639']);
end;

end.
Angehängte Dateien
Dateityp: zip Test.zip (1,3 KB, 4x aufgerufen)

Geändert von haentschman (13. Mai 2018 um 06:33 Uhr)
  Mit Zitat antworten Zitat