Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Seltsame StringList <-> Strings Problem (https://www.delphipraxis.net/138777-seltsame-stringlist-strings-problem.html)

Alphacodex 17. Aug 2009 14:25


Seltsame StringList <-> Strings Problem
 
Hallo,

ich habe hier folgenden Code geschrieben:
Delphi-Quellcode:
procedure Tpickfall.FillBoxen;
var i : integer;
    sl : TStringList;
    tmpname : string;
begin
  cb_fallname.Clear;
  sl.Create; // sl.Sort; sl.Duplicates := dupIgnore;
  for i := 0 to high(dm.falllist) do begin
    tmpname := dm.falllist[i].name;
    sl.Add(tmpname);
  end;
  cb_fallname.Assign(sl);
end;
Das seltsame ist, dass er bei jedem Durchgang der Schleife die Werte des dm.falllist Arrays verändert. Eigentlich dürfte diese Prozedur gar nichts an der falllist ändern sondern nur eben die Namen auslesen. Er schreibt aber (laut Debugger) bei jedem Durchgang ins Namensfeld irgendwelche chinesische Zeichen. Hat das irgendwas mit dem in Delphi 2009 eingeführten Unicode zu tun? Was aber immer noch nicht erklären würde, warum diese Prozedur überhaupt was an der fallliste ändert...

Kann mir jemand weiterhelfen??


Grüße
Codex


P.S. als kurze Erklärung was diese Proc überhaupt machen soll: Es sollen aus einem Array (falliste) alle Namen ausgelesen werden und in eine sortierte und von Duplikaten befreite StringList (sl) eingefüllt werden. Diese StringList soll schließlich an die Items (:TStrings) einer ComboBox(cb_fallname) übergeben werden, damit die Namen in dieser Combobox auftauchen...

Klaus01 17. Aug 2009 14:27

Re: Seltsame StringList <-> Strings Problem
 
kurz und knapp:

Delphi-Quellcode:
//sl := sl.Create; // blöder Fehler von mir
sl :=TStringList.create;

sl.Sort; sl.Duplicates := dupIgnore;
Grüße
Klaus

DeddyH 17. Aug 2009 14:29

Re: Seltsame StringList <-> Strings Problem
 
Zitat:

Delphi-Quellcode:
sl.Create;

:shock:
Delphi-Quellcode:
sl := TStringlist.Create;
So sollte das wohl heißen, oder?

Alphacodex 17. Aug 2009 16:28

Re: Seltsame StringList <-> Strings Problem
 
MANN!! Wie bescheuert... :pale:

Ja das wars... Warum hat den sl auch nochmal ne Create-Prozedur, wenn die eh nix bringt (bestimmt sinnlos geerbt, wa?)


Vielen Dank!!

Grüße
Codex

Apollonius 17. Aug 2009 16:33

Re: Seltsame StringList <-> Strings Problem
 
Alle Konstruktoren können auch an einer Instanz aufgerufen werden, um sie so gewissermaßen zu reinitialisieren. Ich glaube kaum, dass dieses Feature schon oft genutzt wurde.

xZise 17. Aug 2009 16:52

Re: Seltsame StringList <-> Strings Problem
 
Zitat:

Zitat von Alphacodex
MANN!! Wie bescheuert... :pale:

Ja das wars... Warum hat den sl auch nochmal ne Create-Prozedur, wenn die eh nix bringt (bestimmt sinnlos geerbt, wa?)


Vielen Dank!!

Grüße
Codex

Ich glaube nicht das diese Methode geerbt wurde, sondern gezielt eingebaut wurde (damit du TStringList.Create benutzen kannst):
Delphi-Quellcode:
TStringList = class(TStrings)
    [...]
  public
    constructor Create; overload;
    constructor Create(OwnsObjects: Boolean); overload;
MfG
xZise

himitsu 17. Aug 2009 17:01

Re: Seltsame StringList <-> Strings Problem
 
Zitat:

Zitat von Alphacodex
Ja das wars... Warum hat den sl auch nochmal ne Create-Prozedur, wenn die eh nix bringt (bestimmt sinnlos geerbt, wa?)

der "Constructor" ist quasi eine "Class Function" und diese kann man nunmal auch von einer Instanz aus aufrufen (es ist also keine zusätzliche Prozedur, sondern nur einie Einzige),
Delphi-Quellcode:
sl2 := sl1.Create;
wobei sl1 aber eine existierende StringList sein muß.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:40 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