2009-04-30 2 views
5

Czy ktoś wie, co oznacza ten błąd?Delphi: F2084 Błąd wewnętrzny T2575

To przychodzi i odchodzi w jednym z moich oddziałów. Dodawanie spacji lub lineshift będzie kiedyś rozwiązać, a nie kiedyś ...

używam Delphi 2007.

+0

Proszę podać informacje o wersji Delphi – schnaader

Odpowiedz

12

Oto Delphi internal error guide która może pomóc. Błąd wewnętrzny często można rozwiązać, usuwając pliki DCU, restartując IDE lub nie używając narzędzia, które przyspiesza start Delphi (jak DelphiSpeedUp).

Ale w większości przypadków jest to jakiś dziwny błąd w kompilatorze Delphi i jeśli wiesz, że chcesz go obejść, a to nie będzie kosztowne, zrób to i bądź szczęśliwy. Miałem kiedyś awarię konsoli dcc32 (IDE skompilował się dobrze), gdy zwiększyłem zmienną za pomocą Inc i użycie dodatku zamiast Inc rozwiązało problem ...

+1

Nie wątpię, że pomaga w niektórych przypadkach, ale "* Błąd wewnętrzny często można rozwiązać poprzez usunięcie plików DCU, ponowne uruchomienie IDE *" - brzmi bardzo podobnie "* ponownie zainstalować system Windows * "i" * zadzwoń do egzorcysty * "może być następnymi dwoma wskazówkami ;-) – JensG

+0

Wewnętrzny przewodnik błędu podaje wewnętrzny błąd :-) – nurettin

+0

@nurettin: Dzięki za zgłoszenie, naprawione przez Wayback Machine :) – schnaader

5

Najlepiej zrobić to zgłosić to firmie CodeGear. To naprawdę pomaga, jeśli możesz znaleźć sposób na konsekwentne powodowanie błędu, aby łatwiej go było wyśledzić.

1

Wszystkie błędy wewnętrzne to rzeczy, które nie powinny się wydarzyć, ale zrobiły. Sprawdź QC, a jeśli go nie ma, zgłoś to. Jeśli możesz podać sposób jego odtworzenia, to będzie bardziej prawdopodobne, że go naprawią.

Zwykle dla wewnętrznych błędów Wykonuję pełną kompilację lub restartuję Delphi.

1

mam ten błąd w jednym przypadku:

procedure TDMData.SetValue(AValue: Word); 
var 
    prevValue: Word; 
    method: TMethod; 
begin 
    if FValue = AValue then 
    Exit; 
    prevValue := FValue; 
    FValue := AValue; 
    for method in FValueChangeEvent.Notifications do 
    TDMDataValueChangeNotification(method)(Self, AValue, prevValue); 
end; // <--- Fatal: F2084 Internal Error: T2575 

Zarówno nieruchomość GetNotifications Powiadomienia i metoda GetEnumerator rekordu zwróconego przez GetNotifications miał dyrektywy inline. Tylko przez usunięcie inline z GetEnumerator problem zniknął.

Uwaga: podobne funkcje nie powodowały tego błędu wewnętrznego!

2

Też miałem ten problem, i testowałem wiele rozwiązań, ale żaden z nich mi nie pomógł. następnie znalazłem tę przyczynę błędu: w występującej błędzie funkcji, miałem funkcję Inc(), która próbowała dodać zmienną String !! Naprawiłem błąd i wszystko wróciło do normy :)

4

Jednym z prostych sposobów uzyskania błędu wewnętrznego jest użycie wycinanej pasty & w celu utworzenia nowej procedury. Przesunąłem cały kod w bloku IF do nowej procedury i otrzymałem błąd wewnętrzny T2335 na końcu nowej procedury (w Delphi 7).

Błąd został spowodowany przez linię "If (Something) then Break;". Problem polegał na tym, że ten kod nie był już w pętli, więc nie było z czego się zerwać. Zmiana "Przerwa" na "Wyjście" rozwiązała problem.

Poszukaj instrukcji Przerwij i Kontynuuj.

2

miałem inny przypadek dzisiaj (D2010), wszystko składni doskonale prawny od dobrej ol”Turbo Pascal dniach:

type 
    TValueRec = record 
    selector : (int,str,unk); 
    intVal : Integer; 
    strVal : WideString; 
    unkVal : IUnknown; 
    end; 

Korzystanie ten rekord w metodzie klasy generyczne opartym przyniósł mi„F2084 wewnętrzny błąd: AV0661CFEF-R0000000C-0 "gdzieś w środku innej jednostki.

Zmiana to w ten sposób nie trick dla mnie:

type 
    TValueRecSelector = (int,str,unk); 

    TValueRec = record 
    selector : TValueRecSelector; 
    intVal : Integer; 
    strVal : WideString; 
    unkVal : IUnknown; 
    end; 

jednak bardzo denerwujące, że takie rzeczy produkują takie błędy w zupełnie niepowiązanych miejsc w kodzie.