AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit StringList

Ein Thema von toyoman · begonnen am 27. Nov 2007 · letzter Beitrag vom 27. Nov 2007
Antwort Antwort
toyoman

Registriert seit: 2. Jun 2003
323 Beiträge
 
Delphi 2010 Enterprise
 
#1

Probleme mit StringList

  Alt 27. Nov 2007, 09:18
Hallo

Mein Ziel aus einer Datei eine Stringliste erstellen und diese dann bearbeitet in eine Combobox abfüllen.

Dazu habe ich folgende Funktion erstellt:
Delphi-Quellcode:
// StringList abfüllen aus Datei
function StringListFuellen(List: TStringList; Datei:string):boolean;
begin
     List:= TStringList.Create;
     result:=false;
     if fileexists(datei) then
     begin
        List.LoadFromFile(datei);
        result:=true;
     end else
     begin
        result:=false;
     end;
     List.Free;
end;
das funktioniert. Nun aber wenn ich diese List(e) weiterverarbeiten will kommt immer eine Zugriffsverletzung. Keine Ahnung was hier diese Verletzung verursacht.

Mein Aufruf (als Beispiel):
habs schon auf versch. Varianten probiert (als Text oder als einzelne Items auszulesen etc.)

Delphi-Quellcode:
procedure TfrmUebersicht.Button1Click(Sender: TObject);
var
  liste:TStringList;
begin
    if StringListFuellen(Liste,getinivalue('StandardValues','IndexPath')+'\'+getinivalue('StandardValues','IndexFile')) = true then
    begin
      edtitelsuchen.Items.Text:=liste.Text;
    end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Probleme mit StringList

  Alt 27. Nov 2007, 09:23
Du erzeugst deine Stringlist in StringListFuellen und gibst sie am Ende wieder frei. Auch kann diese gar nicht außerhalb verfügbar sein da du sie nicht als Var-paramter übergibst.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Probleme mit StringList

  Alt 27. Nov 2007, 09:30
Guten Morgen,

so sollte es gehen.
So weit ich weiß brauch man Objekte nicht als var Parameter übergeben, da in der Parameterlist
sowieso nur die Adresse des Objektes steht.

Grüße
Klaus

Delphi-Quellcode:
procedure TfrmUebersicht.Button1Click(Sender: TObject);
var
  liste:TStringList;
begin
    liste := TStringList.create;
    if StringListFuellen(Liste,getinivalue('StandardValues','IndexPath')+'\'+getinivalue('StandardValues','IndexFile')) = true then
    begin
      edtitelsuchen.Items.Text:=liste.Text;
    end;
   liste.free;
end;


// StringList abfüllen aus Datei
function StringListFuellen(List: TStringList; Datei:string):boolean;
begin
     //List:= TStringList.Create;
     result:=false;
     if fileexists(datei) then
     begin
        List.LoadFromFile(datei);
        result:=true;
     end else
     begin
        result:=false;
     end;
     //List.Free;
end;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
toyoman

Registriert seit: 2. Jun 2003
323 Beiträge
 
Delphi 2010 Enterprise
 
#4

Re: Probleme mit StringList

  Alt 27. Nov 2007, 09:38
Vielen dank Klaus für deine Hilfe. Werde mir das jetzt genau anschauen damit ich endlich schnall wie sowas aufgebaut sein muss. Funktionieren tuts schonmal.

Gruss

Zitat von Klaus01:
Guten Morgen,

so sollte es gehen.
So weit ich weiß brauch man Objekte nicht als var Parameter übergeben, da in der Parameterlist
sowieso nur die Adresse des Objektes steht.

Grüße
Klaus
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: Probleme mit StringList

  Alt 27. Nov 2007, 13:27
Zitat von Klaus01:
Guten Morgen,

so sollte es gehen.
So weit ich weiß brauch man Objekte nicht als var Parameter übergeben, da in der Parameterlist
sowieso nur die Adresse des Objektes steht.

Grüße
Klaus
Hängt von der Anwendung ab. Er hatte eine Instanz innerhalb der Funktion erzeugt und somit eine neue Adresse. Diese wurde dem Parameter zugewiesen und der muß nunmal ein var Parameter sein, sonst würde die neue Instanz niemals "nach außen" gelangen. Mit Var würde das anlegen der Instanz die selbige auch der übergebenen Variablen zuweisen und entsprechend ausserhalb der Funktion verfügbar sein (nach deren Aufruf).
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Probleme mit StringList

  Alt 27. Nov 2007, 16:25
@Thomas

danke wieder etwas gelernt.

So geht es also auch:

Delphi-Quellcode:
function fillList(var lst:TStringList):boolean;
begin
  lst := TStringList.create;
  lst.Add('1');
  lst.Add('2');
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  sl : TStringList;
begin
  fillList(sl);
  Memo1.lines.Assign(sl);
  sl.free;
end;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#7

Re: Probleme mit StringList

  Alt 27. Nov 2007, 16:54
Der Fehler ist wohl inzwischen klar. Du kannst ListBox aber auch direkt füllen.

Delphi-Quellcode:
// StringList abfüllen aus Datei
function StringListFuellen(List: TStrings; Datei: String): Boolean;
begin
  if fileexists(datei) then
    begin
       List.LoadFromFile(Datei);
       Result:=true;
    end
  else
    begin
       Result:=false;
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not StringListFuellen(ListBox1.Items, 'c:\abc\def.txt') then
    MessageDlg('Fehler beim Laden', mtError, [mbOK], 0);
end;
Oder

Delphi-Quellcode:
// StringList abfüllen aus Datei
function StringListFuellen(List: TStringList; Datei: String): Boolean;
begin
  if fileexists(datei) then
    begin
       List.LoadFromFile(Datei);
       Result:=true;
    end
  else
    begin
       Result:=false;
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  sl: TStringList;
begin
  sl := TStringList.Create;
  try
    if not StringListFuellen(sl, 'c:\abc\def.txt') then
      MessageDlg('Fehler beim Laden', mtError, [mbOK], 0);


  finally
    sl.Free;
  end;
end;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz