Einzelnen Beitrag anzeigen

Benutzerbild von haentschman
haentschman

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

AW: Generics richtig verstanden?

  Alt 12. Mai 2018, 17:18
...auf die Schnelle.

Wichtige Methoden:
http://docwiki.embarcadero.com/Libra...ry.TryGetValue
http://docwiki.embarcadero.com/Libra...ry.ContainsKey

PS: Ich verstehe den Sinn hinter dem btnInhaltClick und btnKeyClick nicht. Was wolltest du erreichen?

Delphi-Quellcode:
unit uMain;

interface

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

type
  TSIPair = TPair<string, Integer>; // declares instantiated type
  TSSPair = TPair<string, string>; // declares with other data types
  TISPair = TPair<Integer, string>;
  TIIPair = TPair<Integer, Integer>;

  TCustomer = record
    PostCode: string;
  end;

  TForm1 = class(TForm)
    btn1: TButton;
    btnKey: TButton;
    edtKey: TEdit;
    btnInhalt: TButton;
    edtInhalt: TEdit;
    lblKey: TLabel;
    lblValue: TLabel;
    btnpostleitzahl: TButton;
    procedure btn1Click(Sender: TObject);
    procedure btnKeyClick(Sender: TObject);
    procedure btnInhaltClick(Sender: TObject);
    procedure btnpostleitzahlClick(Sender: TObject);
  private
    procedure Postleitzahlen;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
begin
  Close;
end;

procedure TForm1.btnKeyClick(Sender: TObject);
var
  Key: TPair<string, Integer>;
  TSS: TSSPair; //typ parameter zuweisen bsp. string oder Integer
begin //string zugewiesen
  Key := TPair<string, Integer>.create;
  try
    Key.Key := edtKey.Text;
    lblKey.caption := Key.Key;
    TSS := TSsPair.create; //string zugewiesen
    TSS.Value := 'Dies ist ein Test';
    ShowMessage(TSS.Value);
    //ShowMessage(Key.Key);
  finally
    freeandNil(Key);
    FreeAndNil(TSS);
  end;
end;

procedure TForm1.btnInhaltClick(Sender: TObject);
var
  Inhalt: TPair<string, Integer>; //Integer zugewiesen
  TSI: TSIPair;
begin
  Inhalt := TPair<string, Integer>.create;
  try
    Inhalt.Value := StrToInt(edtInhalt.text);
    lblValue.caption := inttostr(Inhalt.Value);
    TSI := TSIPair.create; //Integer zugewiesen
    TSI.Value := 523;
    ShowMessage(inttostr(TSI.Value));
    //ShowMessage(inttostr(Inhalt.Value));
  finally
    FreeAndNil(Inhalt);
    FreeAndNil(TSI);
  end;

end;

procedure TForm1.btnpostleitzahlClick(Sender: TObject);
begin
  Postleitzahlen;
end;

procedure TForm1.Postleitzahlen;
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.
Angehängte Dateien
Dateityp: pas uMain.pas (2,6 KB, 3x aufgerufen)
  Mit Zitat antworten Zitat