2013-03-22 24 views
6

ja utrzymywanie starszych aplikacji i mam następujący wiersz kodu:Co zastępuje przestarzałe AllocMemSize

sb.Panels[3].Text:= ' Memory in use: ' + IntToStr(AllocMemSize); 

i daje następujące ostrzeżenie:

[dcc32 Warning] BLOB.pas(8242): W1000 Symbol 'AllocMemSize' is deprecated 

i rzeczywiście, AllocMemSize jest przestarzała (z System.pas):

var 
    AllocMemSize: Integer deprecated; {Unsupported} 

Moje pytanie brzmi: czym jest zamiennik dla AllocMemSize? Czy jest jakiś sens? Czy mogę tam umieścić coś bardziej znaczącego?

(chyba mogę tylko usunąć połączenie i wyjście w całości, ale użytkownicy najwyraźniej chcą zobaczyć tę informację na pasku stanu)

+1

Mała wyszukiwarka google podała ten link: http://www.delphigroups.info/2/5/1025020.html, prawdopodobnie nie jest to użyteczne, ale AllocMemSize wygląda na skazanego od początku ... –

+0

Tak, widziałem to rozmowa - nie pomagała. –

Odpowiedz

9

połączenia GetMemoryManagerState zamiast. Zwraca podobne informacje, chociaż niekoniecznie jest oddestylowany do pojedynczej liczby, takiej jak AllocMemSize. To wycofanie spowodowane jest zmianą Delphi wokół Delphi 2006 na używanie FastMM dla menedżera pamięci i inaczej niż poprzednio zarządzającego pamięcią.

Patrz także Monitoring memory usage w dokumentacji.

+1

Tak więc, zgodnie z tą odpowiedzią uważam, że ['ten kod'] (http://pastebin.com/w3sWfi94) może być wykorzystany do uzyskania całkowitej przydzielonej przestrzeni pamięci dla (wszystkich?) Wersji Delphi. – TLama

+0

Nie mam możliwości sprawdzenia, @Tlama. Nie wiem, jaka jest wersja 18 kompilatora, ale czy kompilatory, które stare rozpoznają dyrektywę "$ IF"? –

+0

Co najmniej Delphi 7. "CompilerVersion = 18" oznacza kompilator Delphi 2006. – TLama

Powiązane problemy