Как вынудить компилятор Delphi отобразить все подсказки и предупреждения

Я добавляю этот ответ на случай, если кто-то еще захочет сохранить набор записей хоста в текстовом файле, отформатированном как обычный файл хоста. Это ищет разделитель табуляции. Это основано на ответах @Rashy и @ that0n3guy. Различия можно заметить вокруг команды FOR.

@echo off
TITLE Modifying your HOSTS file
ECHO.

:: BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"="
    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    pushd "%CD%"
    CD /D "%~dp0"
:--------------------------------------

:LOOP
SET Choice=
SET /P Choice="Do you want to modify HOSTS file ? (Y/N)"

IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%

ECHO.
IF /I '%Choice%'=='Y' GOTO ACCEPTED
IF /I '%Choice%'=='N' GOTO REJECTED
ECHO Please type Y (for Yes) or N (for No) to proceed!
ECHO.
GOTO Loop


:REJECTED
ECHO Your HOSTS file was left unchanged.
ECHO Finished.
GOTO END


:ACCEPTED
setlocal enabledelayedexpansion
::Create your list of host domains
for /F "tokens=1,2 delims=  " %%A in (%WINDIR%\System32\drivers\etc\storedhosts.txt) do (
    SET _host=%%B
    SET _ip=%%A
    SET NEWLINE=^& echo.
    ECHO Adding !_ip!       !_host!
    REM REM ::strip out this specific line and store in tmp file
    type %WINDIR%\System32\drivers\etc\hosts | findstr /v !_host! > tmp.txt
    REM REM ::re-add the line to it
    ECHO %NEWLINE%^!_ip!        !_host! >> tmp.txt
    REM ::overwrite host file
    copy /b/v/y tmp.txt %WINDIR%\System32\drivers\etc\hosts
    del tmp.txt 
)

ipconfig /flushdns
ECHO.
ECHO.
ECHO Finished, you may close this window now.
GOTO END

:END
ECHO.
PAUSE
EXIT

Пример «storehosts.txt» (с разделителями табуляции)

127.0.0.1   mysite.com
168.1.64.2  yoursite.com
192.1.0.1   internalsite.com
9
задан Christopher Chase 28 July 2010 в 03:23
поделиться

5 ответов

Я бы проверил, отключаете ли вы предупреждения в некоторых из ваших подразделений.
В зависимости от последнего изменения единиц может меняться порядок компиляции. В некоторых случаях предупреждения могут оставаться отключенными для модуля, который скомпилирован через некоторое время, когда он только что извлечен из системы управления версиями, он был скомпилирован ранее с предупреждениями.
Обратите особое внимание на любой файл Include , который вы можете использовать.

3
ответ дан 4 December 2019 в 13:49
поделиться

Если вы используете dcc32.exe, все предупреждения будут отображаться всегда. (Это еще одна причина, по которой я использую сценарии сборки для всех своих проектов.)

2
ответ дан 4 December 2019 в 13:49
поделиться

Подсказки и предупреждения генерируются компилятором. Он будет сообщать только о единицах, которые он скомпилировал. Команда "compile" будет компилировать только файлы, у которых изменено . Для принудительной перекомпиляции всех модулей, используемых в вашем проекте, используйте вместо этого команду Build .

Более поздние версии назначают сочетание клавиш (Shift + F9) для команды «Build».

Чтобы получить это сочетание клавиш в Delphi 6, установите эту утилиту , которую я некоторое время с большим успехом использовал в Delphi 5.

7
ответ дан 4 December 2019 в 13:49
поделиться

Я все еще использую D6 для некоторых проектов, и если я сделаю полную сборку, то все подсказки и предупреждения будут отображаться / повторно отображаться. Для проверки синтаксиса или компиляции отображаются только сообщения об измененных модулях.

У вас еще что-то не так или где-то повреждено. Попробуйте удалить проект .dsm и файлы .dof (они будут перестроены), файл .dof содержит флаги предупреждений и подсказок.

0
ответ дан 4 December 2019 в 13:49
поделиться

У меня была такая же проблема, и наконец я нашел решение... Ищите строки $WARNINGS OFF и $HINTS OFF, причем не только из *.pas файлов, а из всех файлов. У меня была такая странная идея в стороннем .inc файле:

{$IFDEF DEBUG} {$WARNINGS ON} {$HINTS ON} {$ELSE} {$WARNINGS OFF} {$HINTS OFF} {$ENDIF}

3
ответ дан 4 December 2019 в 13:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: