Hallo zusammen,
ich bin gerade dabei mich in Delphi einzuarbeiten (Lazarus) und habe damit begonnen ein Formular mit einer TListView zu erstellen, die Inhalte aus einer .csv Datei anzeigen soll.
Dazu gibt's einen Button der auf Klick eben die Inhalte aus der
csv ausliest. Dieses Auslesen und Hinzufügen möchte ich mehrfach verwenden (gibt später noch andere Buttons), daher habe ich dafür eine eigene procedure erstellt.
Aber irgendwo habe ich noch einen Fehler, es läuft nicht. Such jetzt schon so lange aber finde es nicht.
Der Compiler sagt:
unit1.pas(90,22) Warning: Local variable "ListView1" does not seem to be initialized
Nach dem Klick auf besagten Button wird als Fehler ausgegeben:
"Projekt ... hat
Exception-Klasse "External: SIGSEGV" ausgelöst.
In Datei '.include/listitems.inc' in Zeile 94"
Da heißt's:
Delphi-Quellcode:
{------------------------------------------------------------------------------}
{ TListItems Add }
{------------------------------------------------------------------------------}
function TListItems.Add: TListItem;
begin
// Zeile 94:
if Assigned(Owner) then
Result := Owner.CreateListItem
else
Result := TListItem.Create(Self);
AddItem(Result);
end;
Mein Code schaut wie folgt aus:
Delphi-Quellcode:
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
ExtCtrls, Grids, ComCtrls;
type
{ TmainFrm }
TmainFrm =
class(TForm)
Beenden: TButton;
Halle: TButton;
ListView1: TListView;
procedure BeendenClick(Sender: TObject);
procedure HalleClick(Sender: TObject);
private
public
end;
var
mainFrm: TmainFrm;
implementation
{$R *.lfm}
type
TStrArray =
array of string;
var
dateiname:
string;
function explode......
end;
procedure dateiladen(dateiname:
string);
var
ListView1: TListView;
list: TStringList;
listItem: TListItem;
x, ItemCount: Integer;
a: TStrArray;
begin
list:=TStringList.Create;
list.Clear;
list.LoadFromFile(dateiname);
itemCount:=list.Count;
// listView1.Items.Clear;
for x:=0
to itemCount-1
do begin
Explode(a,'
;',list.Strings[x]);
listItem:=ListView1.Items.Add;
listItem.Caption:=a[0];
listItem.SubItems.Add(a[1]);
listItem.SubItems.Add(a[2]);
listItem.SubItems.Add(a[3]);
end;
list.free;
end;
{ TmainFrm }
procedure TmainFrm.BeendenClick(Sender: TObject);
begin
application.terminate;
end;
procedure TmainFrm.HalleClick(Sender: TObject);
var
dateiname:
string;
begin
dateiname:='
C:\Users\pfad_dateiname';
dateiladen(dateiname);
end;
Da ich die ListView mit den Spalten und Spaltenüberschriften über das Formular erstellt habe, brauch ich wohl dafür keinen Create.
Wenn ich listView1.Items.Clear; rein tu, dann läufts auch nicht:
"Projekt ... hat
Exception-Klasse "External: SIGSEGV" ausgelöst.
In Datei 'unit1.pas' in Zeile 84:
listView1.Items.Clear;"
Wo hab ich jetzt den Hund?