AGB  ·  Datenschutz  ·  Impressum  







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

TStringList - Zugriff auf property

Offene Frage von "NicoleWagner"
Ein Thema von NicoleWagner · begonnen am 29. Jun 2018 · letzter Beitrag vom 9. Jul 2018
Antwort Antwort
Seite 1 von 3  1 23      
NicoleWagner

Registriert seit: 6. Jul 2010
167 Beiträge
 
Delphi XE3 Professional
 
#1

TStringList - Zugriff auf property

  Alt 29. Jun 2018, 17:56
Delphi-Version: 5
Hallo Leute,

in Delphi XE3 ist ein Bug, der zuweilen beim Zugriff von Listen auftritt. Ich habe nie herausgefunden, wann genau. Wir werden es auch nicht lösen, sondern ich bitte Euch, mir beim Basteln eines Workarounds zu helfen.

Ich will zugreifen auf ein Feld(?) eines StringLists, also z.B. mit s:=StringList1[0];
Dabei knallt es so, dass ich die IDE neu starten muss, was an Delphi liegt.

Intern wird dieser Wert gespeichert in einem array(?) StringList1.FList[0], wenn ich nicht irre.
Das StringList1 sieht im Debug Fenster sauber aus. Sein internes property(?) StringList1.FList[0] hat genau den Wert, den ich gerne zugreifen würde. Delphi sollte darauf mit StringList1[0] zugreifen, das eben funktioniert in der XE3 Version in einigen Fällen nicht!
StringList1[0] zeigt mir dann auch im Debugger "inaccessible value".

So der langen Rede kurzer Sinn:
Hat jemand eine Idee, wie ich StringList1.FList[0] zugreifen kann? Der Wert ist derselbe, jedoch ist das property private und kann im Code nicht verwendet werden.
Danke für Tipps!
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.995 Beiträge
 
Delphi 12 Athens
 
#2

AW: TStringList - Zugriff auf property

  Alt 29. Jun 2018, 18:20
Dabei knallt es so, dass ich die IDE neu starten muss, was an Delphi liegt.
Das liegt mit an Sicherheit grenzender Wahrscheinlichkeit nicht an Delphi, sondern an deinem Code. Vermutlich ist die StringList-Instanz nicht mehr gültig. Wenn dem so ist, hilft dir auch kein noch so cleverer Workaround.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: TStringList - Zugriff auf property

  Alt 29. Jun 2018, 18:25
Hallo,
Zitat:
Das StringList1 sieht im Debug Fenster sauber aus.
Die StringList ist freigegeben, der alte Speicherbereich aber noch nicht überschrieben.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.478 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: TStringList - Zugriff auf property

  Alt 29. Jun 2018, 20:56
Ich gehe auch mal davon aus, dass es nicht an Delphi liegt, sondern an einem Fehler im Code.

Du könntest zum einen verschiedene Prüfungen vornehmen, ob die Liste gültig ist bzw. der Indexeintrag. Wenn der nicht gültig ist, sollte eigentlich nur ein Listindex-Fehler auftreten.

Test etwa so:
Delphi-Quellcode:
if (Stringlist1 <> NIL) and (Stringlist1.count >0) then
  s := StringList1[0];
end;
Du könntest bei Deiner speziellen Problemstellung im Debugger auch Prüfen, wie der Inhalt von StringList1.text aussieht (ob da also auch der Teil drin steht, den Du erwartest).

Ein alternativer Zugriff auf StringList[0] mit den Standardeinstellungen der StringList ginge auch so:

Delphi-Quellcode:
if StringList1 <> NIL then begin
  S := copy (stringlist1.text, 1, pos (sLinebreak, stringlist1.text)-1);
end;
--

Geändert von Harry Stahl (29. Jun 2018 um 23:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.332 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: TStringList - Zugriff auf property

  Alt 30. Jun 2018, 07:00
Ich würde FastMM einbinden um zu schauen was da nicht in Ordnung ist.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: TStringList - Zugriff auf property

  Alt 30. Jun 2018, 09:05
Zeig doch mal den Sourcecode

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
NicoleWagner

Registriert seit: 6. Jul 2010
167 Beiträge
 
Delphi XE3 Professional
 
#7

AW: TStringList - Zugriff auf property

  Alt 30. Jun 2018, 10:37
Danke für alle Antworten.
Ich habe alle Anregungen probiert und einen Screenshot von der Ausgabe im Debug-Fenster gemacht.

Ich werde daraus nicht klüger.
https://www.dropbox.com/s/o06tvrhan5...oblem.png?dl=0

Und ja, die Optimierung ist abgeschaltet.

Danke für weitere Ideen im voraus!

Geändert von NicoleWagner (30. Jun 2018 um 10:40 Uhr)
  Mit Zitat antworten Zitat
NicoleWagner

Registriert seit: 6. Jul 2010
167 Beiträge
 
Delphi XE3 Professional
 
#8

AW: TStringList - Zugriff auf property

  Alt 30. Jun 2018, 10:52
Dabei knallt es so, dass ich die IDE neu starten muss, was an Delphi liegt.
Das liegt mit an Sicherheit grenzender Wahrscheinlichkeit nicht an Delphi, sondern an deinem Code. Vermutlich ist die StringList-Instanz nicht mehr gültig. Wenn dem so ist, hilft dir auch kein noch so cleverer Workaround.
Wo kann das passieren? Mir sieht es sauber aus.
Wenn der Fehler bei mir läge, wäre mir das deutlich lieber, denn dann könnte ich ihn korrigieren:
Var
...
SL_SUB: TStringList;
...

begin
{$O-}

SL_SUB:=TStringList.Create;
SL_SUB.Clear;

.......

SL_SUB.Add(' div zeilen ');
.....
SL_SUB.CustomSort(StringListSortComparefn2);

* hier ist der Screenshot aus dem debug window genommen *
https://www.dropbox.com/s/o06tvrhan5...oblem.png?dl=0

SL_SUB.Free;

end;
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: TStringList - Zugriff auf property

  Alt 30. Jun 2018, 11:06
Hallo,
aha, wir kommen näher.

Es wird also sortiert.

"div Zeilen" nützt uns nichts, bitte lauffähigen Code hier reinstellen.
SL_SUB.Add('x');
SL_SUB.Add('y');

Es fehlt der Code von StringListSortComparefn2.


1. Was passiert eigentlich, wenn Du StringListSortComparefn2 mal auskommentierst?
2. Hast Du mal einen Brealpoint auf die Zeile SL_SUB.Free; gesetzt und dann deine Watchpoints angesehen.
3. Nimm mal alle anderen Watchpoints raus.
Heiko

Geändert von hoika (30. Jun 2018 um 11:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.332 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: TStringList - Zugriff auf property

  Alt 30. Jun 2018, 11:27
Erstens würde ich wie gesagt FastMM versuchen. Wenn da irgendein Objekt benutzt wird nachdem es schon freigegeben wurde, wird das damit angezeigt. Inklusive Stacktraces wo das Objekt erstellt und wo freigegeben wurde und wo der Fehler nun verursacht wird.

Die andere Variante:
Kommentiere immer mehr Teile des Quelltextes aus bis du entweder merkst was den Fehler verursacht, weil er nicht mehr auftritt oder du ein Beispiel hast, das klein genug ist um es komplett zu zeigen.

Wenn du den Quelltext nicht veröffentlichen möchtest, kannst du mir auch ein lauffähiges größeres Beispiel per PN schicken. Dann würde ich hier nur posten wo der Fehler herkommt, wenn ich ihn gefunden habe. Heute hätte ich gerade etwas Zeit mir das anzuschauen vorausgesetzt ich bekomme ein Beispiel, mit dem ich den Fehler reproduzieren kann.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      

 

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 06:02 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