Я добавляю этот ответ на случай, если кто-то еще захочет сохранить набор записей хоста в текстовом файле, отформатированном как обычный файл хоста. Это ищет разделитель табуляции. Это основано на ответах @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
Я бы проверил, отключаете ли вы предупреждения в некоторых из ваших подразделений.
В зависимости от последнего изменения единиц может меняться порядок компиляции. В некоторых случаях предупреждения могут оставаться отключенными для модуля, который скомпилирован через некоторое время, когда он только что извлечен из системы управления версиями, он был скомпилирован ранее с предупреждениями.
Обратите особое внимание на любой файл Include
, который вы можете использовать.
Если вы используете dcc32.exe, все предупреждения будут отображаться всегда. (Это еще одна причина, по которой я использую сценарии сборки для всех своих проектов.)
Подсказки и предупреждения генерируются компилятором. Он будет сообщать только о единицах, которые он скомпилировал. Команда "compile" будет компилировать только файлы, у которых изменено . Для принудительной перекомпиляции всех модулей, используемых в вашем проекте, используйте вместо этого команду Build .
Более поздние версии назначают сочетание клавиш (Shift + F9) для команды «Build».
Чтобы получить это сочетание клавиш в Delphi 6, установите эту утилиту , которую я некоторое время с большим успехом использовал в Delphi 5.
Я все еще использую D6 для некоторых проектов, и если я сделаю полную сборку, то все подсказки и предупреждения будут отображаться / повторно отображаться. Для проверки синтаксиса или компиляции отображаются только сообщения об измененных модулях.
У вас еще что-то не так или где-то повреждено. Попробуйте удалить проект .dsm и файлы .dof (они будут перестроены), файл .dof содержит флаги предупреждений и подсказок.
У меня была такая же проблема, и наконец я нашел решение... Ищите строки $WARNINGS OFF и $HINTS OFF, причем не только из *.pas файлов, а из всех файлов. У меня была такая странная идея в стороннем .inc файле:
{$IFDEF DEBUG} {$WARNINGS ON} {$HINTS ON} {$ELSE} {$WARNINGS OFF} {$HINTS OFF} {$ENDIF}