Einzelnen Beitrag anzeigen

neroo

Registriert seit: 5. Okt 2018
7 Beiträge
 
#1

strings einer combobox vergleichen

  Alt 6. Apr 2019, 15:19
Hallo,

ich möchte hier nachdem ich die Datei eingelesen haben, die erste spalte der Tabelle zu einer combobox hinzufügen.
Dies mache ich mit dem Befehl combobox.items.add(); aber ich möchte hier die mehrmals vorkommenden strings löschen,
sodass ein string nur einmal vorkommt. Leider komme ich hier nicht weiter. ich wäre dankbar für die Hilfe.

Code:
unit Datei;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
  Buttons, Grids, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    schliess_knopf: TButton;
    einlesen_knopf: TButton;
    s_standortname: TComboBox;
    Label1: TLabel;
    oeffnen_knopf: TButton;
    ende_knopf: TBitBtn;
    fuss: TStatusBar;
    OpenDialog: TOpenDialog;
    etabelle: TStringGrid;
    procedure beenden(Sender: TObject);
    procedure einlesen(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure schliessen(Sender: TObject);
  end;

var Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

var anzahl: integer;
    datei_name: string;
    datei: textfile;
procedure TForm1.FormShow(Sender: TObject);
begin
  datei_name:='d:\temp\windenergie01.csv';
  with etabelle do
    begin
      Cells[1,0]:='Standort';
      Cells[2,0]:='Windrad';
      Cells[3,0]:='Nennleistung';
      Cells[4,0]:='Datum';
      Cells[5,0]:='Energiemenge';
    end;

  //
end;

procedure TForm1.schliessen(Sender: TObject);
begin
  //
end;

procedure TForm1.beenden(Sender: TObject);
begin
  close;
end;

procedure TForm1.einlesen(Sender: TObject);
var i,posi: integer;
    maxi,wert: double;

    buffer,eintrag,s1,s2,s3,s4,s5: string;
    ok: boolean;
begin
  with opendialog do
    begin
      title:='Windenergie einlesen';
      filename:=datei_name;
      initialdir:=extractfilepath(datei_name);
      filter:='Windenergieergebnisse (*.csv)|*.csv|alle Dateien (*.*)|*.*';
    end;
  if opendialog.execute then
    begin
      datei_name:=opendialog.filename;
      assignfile(datei,datei_name);
      {$I-}
      reset(datei);
      readln(datei);
      i:=0;
      while not(eof(datei)) do
        begin
          inc(i);
          readln(datei,eintrag);
          //Suedkueste,ElCedro2,3.4MW,01.02.2017,4092kWh
          posi:=pos(',',eintrag);
          s1:=copy(eintrag,1,posi-1);
          delete(eintrag,1,posi);
          //ElCedro2,3.4MW,01.02.2017,4092kWh
          posi:=pos(',',eintrag);
          s2:=copy(eintrag,1,posi-1);
          delete(eintrag,1,posi);
          //3.4MW,01.02.2017,4092kWh
          posi:=pos(',',eintrag);
          s3:=copy(eintrag,1,posi-1);
          delete(eintrag,1,posi);
          //01.02.2017,4092kWh
          posi:=pos(',',eintrag);
          s4:=copy(eintrag,1,posi-1);
          delete(eintrag,1,posi);
          //4092kWh
          s5:=eintrag;


          //
          with etabelle do
            begin
              if i>=rowcount then rowcount:=rowcount+1;
              cells[1,i]:=s1;
              cells[2,i]:=s2;
              cells[3,i]:=s3;
              cells[4,i]:=s4;
              cells[5,i]:=s5;
            end;
          //standortname in combobox schreiben
            d1:=s1;
            s_standortname.Items.Add(etabelle.Cells[1,i]);

          //--

          //
        end;
      closefile(datei);
      {$I+}
      ok:=(ioresult=0);
      //--


      //--
    end;

end; //einlesen



end.
  Mit Zitat antworten Zitat