Vážená komunito,
narazil jsem na zvláštní chování dynamického pole, jehož velikost měním ve vláknu, které se na něj odkazuje přes ukazatel. Pro lepší pochopení:
type
TArrayString = array of string;
PArrayString = ^TArrayString;
...
pole: TArrayString;
...
Vlákno při jeho vytvoření dostane ukazatel (PArrayString) na pole (Vlakno.Create(@pole)). V Execute části se pole zvětšuje a plní. Zde v debug okně vidím, že je vše v pořádku. Zvětšování a plnění je vše s operátorem ^.
Na konci Execute části vlákna mám Synchronize s procedurou, která dále pracuje s polem (ale né již s ukazatelem, protože tato volaná procedura je v hlavním vlákně. Zde ovšem v debug okně vidím, že pole je prázdné.
Proč se to děje? Jakoby se pole měnilo jen lokálně a po skončení vlákna se vrátilo do původní velikosti, tj. do 0. Domníval jsem se, že přes ukazatele přistupuji přímo na proměnou pole a že tak i s ní pracuje "napřímo".
Kde může být chyba?
Děkuji.