Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Parameterübergabe bei BeginThread für Klassenmethode (https://www.delphipraxis.net/152688-parameteruebergabe-bei-beginthread-fuer-klassenmethode.html)

himitsu 3. Jul 2010 11:57

AW: Parameterübergabe bei BeginThread für Klassenmethode
 
Es hat sich seit Jahrzehten nichts mehr geändert ... da wird sich wohl so schnell auch nicht dran ändern :roll:

Warum haben wir kein [Spoiler]-Tag?
(sonst hätte ich es vorhin ja schon geschrieben)
Code:
1: "abc "

2: "tja abc abc "

3: zufallswert, da i nicht initialisiert und Result nicht zugewiesen

4: zufallswert + 1, da Result nicht initialisiert

Luckie 3. Jul 2010 12:33

AW: Parameterübergabe bei BeginThread für Klassenmethode
 
[QUOTE=SirThornberry;1033246]
Zitat:

Zitat von himitsu (Beitrag 1033151)
Ist BeginThread eine Api-Funktion?

Nein die API-Funktion ist MSDN-Library durchsuchenCreateThread. BeginThread ist der Delphi-Wrapper, um unter anderem durch setzen von IsMultiThreaded den Heap Thread sicher zumachen.

idefix2 5. Jul 2010 01:24

AW: Parameterübergabe bei BeginThread für Klassenmethode
 
@ himitsu: darauf, dass bei 1. "abc " herauskommt, würde ich mich jedenfalls nicht verlassen. Result wird zwar über den Stack übergeben, aber ob wirklich immer ein push nil erfolgt? Genausogut könnte der generierte Code den Stackpointer direkt erhöhen, ohne einen definierten Wert dort abzulegen, dann löst u.U. schon Result := Result+... eine Exception aus. Turbo Pascal hat das bei Stringresults so gemacht, allerdings waren das short Strings, wo im Stack direkt die Maximallänge des Strings, bis zu 255 bytes + Längenbyte, reserviert wurde und nicht nur ein Pointer.

himitsu 5. Jul 2010 06:04

AW: Parameterübergabe bei BeginThread für Klassenmethode
 
ich sag's ja nicht, daß es immer so ist ... aber bei dem Beispiel isses so, darum dann auch der zweite Durchlauf mit "tja abc abc ", um das Problem besser aufzuzeigen.

auch wenn Stringvariablen für gewöhnlich automatisch initialisiert werden ... man sollte ja eh seine Variablen initialisieren. :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:27 Uhr.
Seite 2 von 2     12   

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