Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TStringList - Zugriff auf property (https://www.delphipraxis.net/196912-tstringlist-zugriff-auf-property.html)

Harry Stahl 2. Jul 2018 19:07

AW: TStringList - Zugriff auf property
 
Zitat:

Zitat von NicoleWagner (Beitrag 1406356)
1) Die ShowMessage Ausgabe funktioniert auf einmal korrekt(!!), - für beide Testausgabezeilen.
2) Der finally Block wird abgearbeitet.

Also ein kleines Quentchen Trost.
Doch noch immer crasht mir die komplette IDE, wenn ich meinen Wert weiterverarbeiten möchte.

Wie sieht denn die Weiterverarbeitung aus? Evtl. liegt ja auch da das Problem?
Tritt das Problem auf allen PC's auf oder nur auf Deinem?
Welche Windows-Version?
Innerhalb oder außerhalb einer VM?

- Versuche einmal das Programm ohne den Style auszuführen
- Setze das {$O-} einmal vor die Prozedure, statt innerhalb (ist eigentlich egal, versuchs trotzdem mal)

hoika 2. Jul 2018 20:00

AW: TStringList - Zugriff auf property
 
Hallo,
also, neues Projekt anlegen,
FormCreate erzeugen und Deinen Code reinkopieren und laufen lassen.

Was passiert denn dann?

Nennt sich Minimalbeispiel.

Hast Du mal FastMM4 eingebunden?

Rolf Frei 3. Jul 2018 14:43

AW: TStringList - Zugriff auf property
 
Ich bin mir relativ sicher, dass das was du hier siehst ein Nebeneffekt von was ganz Anderem ist, das vermutlich den Speicher des Debuggers zerschossen hat.

Wie schon mehrfach erwähnt, baue mal ein simples Projekt mit nur einem FormCreate (wie in meinem Beispiel) und debugge das. Wenn da alles IO ist, suchst du an der falschen Stelle. Dann machst du zu 100% irgendwo sonst den Speicher "kaputt" und das was du hier siehst sind alles Nebeneffekte davon.

Betreffs Try/Finaly:
Wenn du das nicht richtig genutzt hast, würde es mich nicht wundern, wenn ganau darin der Hund begraben ist. Wenn du das nicht gerade in einem Loop mit 1 Mio. Durchläufen platziert hast, wirst du keinen nennenswerten Performanceunterschied merken. Ansonsten platziert man es ausserhalb des Loops. Aber einfach darauf verzichten ist das dümmste was man machen kannst.

p80286 3. Jul 2018 17:25

AW: TStringList - Zugriff auf property
 
Geht es eigentlich immer noch um den Inaccessable Value?
Wenn Ja -
Delphi-Quellcode:
(showmessage(sl_untergruppe[2]);
bringt wohl jeden Debugger aus dem Tritt.

Ansonsten vergesst es.

Gruß
K-H

Hobbycoder 3. Jul 2018 19:50

AW: TStringList - Zugriff auf property
 
Zitat:

Zitat von NicoleWagner (Beitrag 1406365)
an Michael, danke für Deine Antwort,zu "ganzen Code hochladen": Du sprichst von einer ziemlich großen eingebundenen DB und deutlich über 100 Units.
Eine "einfache Version" an Code siehst Du bereits, den ganzen Code willst Du, glaube mir, NICHT sehen, smile.
Wenn Du die umfangreichen DB-Query-Abfragen noch in stochastische Prozesse schickst, dann merkst Du ein "try" mehr oder weniger auch dann, wenn Du so einen schnellen Computer hast wie ich. Alte PCs haben da noch tagelang gerechnet daran.

Wenn ich das lese, dann kommt mir der Gedanke, dass evtl. in einer der 100 Units ein Thread am werkeln ist? Der vielleicht auch noch irgendwie an der Stringlist rumfingert?
Und da wir den Code nicht sehen können, glaube ich nicht, dass man hier den Fehler finden kann.

PS: @NicoleWagner, sind dir die kleinen Symbole über dem Eingabefeld aufgefallen, in dem du deine Antworten schreibst? Diese sind ganz nützlich ;-) Helfen sie doch z.B. Delphi-Code zu formatieren. Und etwas weiter unten findest du einen Button "Anhänge verwalten". Damit kann man Bilder hochzuladen, dann müssen die Leser nicht zur Dropbox wechseln.

NicoleWagner 9. Jul 2018 15:07

AW: TStringList - Zugriff auf property
 
Die Lösung:

Einmal danke allen, die hier mitgeraten haben. Viele hatten auch recht mit ihren Ideen. Die konkrete Methode, wie ich an den Fehler rankomme, kam jedoch von Fritz (danke!) via Mail. Fritz' Idee war, dass ich das BEFÜLLEN des TStringLists in eine eigene Methode auslagere.
Als ich die geschrieben hatte und zeilenweise durchklickte, fand ich den Wurm:

Mein StringList wird durch andere StringLists befüllt. Ein sortiertes kommt von links, ein anders sortiertes kommt von rechts.
Was mir entging: Es gibt Sonderfälle, in denen eines dieser Quell-StringLists eine Zeile weniger hat.
Sah alles ganz normal aus. Das Zielstringlist wurde übergeben und auch in der Werteliste zeigten sich Inhalte, - die jedoch im Einzelfall gar nicht da waren (das errieten hier viele). Wo mir der Fehler als 'aufgetreten' angezeigt wurde, da war er nicht zu finden, weil schon lange vorher als Sand im Getriebe.

Mein Weg zu besserem Code sieht jetzt so aus:
Statt
ZielStringList.Add(Quellstringlist[zugriff]);
fülle ich jetzt mit
If Quellstringlist.Count > zugriff then ZielStringList.Add(Quellstringlist[zugriff]);


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:50 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz