OK, udało się rozwiązać problem. Tak podejrzewam.
Dla potomności przedstawiam rozwiązanie:
procedure procka(FileName: string);
begin
//tworzenie node'a, a potem przypisanie wartości FileName do pola Data:
//najpierw musimy zaalokować pamięć dla pola Data:
node.Data:=AllocMem(length(FileName)+1);
{Bierzemy sobie o jeden bajt pamięci więcej z tego powodu, że podczas odczytu danych możemy nie znać ich długości. Jeden bajt więcej sprawi to, że dane będą zakończone na pewno znakiem #0. Gdyby tego nie zrobić, owszem jest możliwość, że dane będą zakończone znakiem #0, ale niekoniecznie}
//zaalokowany fragment pamięci jest pusty, a więc należy do niego skopiować to, co nas interesuje
CopyMemory(node.Data, PChar(FileName), length(FileName));
end;
I tyle. Oczywiście nie używam tu nigdzie instrukcji FreeMem z tego powodu, że zapisane dane potrzebuję przez cały czas działania programu. Dobrym nawykiem byłoby zwalnianie zaalokowanej pamięci podczas zamykania aplikacji, jednak z moich testów wynika, że nie jest to konieczne(pamięć zostanie zwolniona automatycznie). FreeMem TRZEBA użyć wtedy, gdy już nie potrzebujemy dłużej alokowanego miejsca.
Niech mnie ktoś poprawi, jeśli się mylę.