Хорошо, хотя я уже рассмотрел ответы font-size: 0;
и not implemented CSS3 feature
, после попытки выяснил, что ни одно из них не является реальным решением.
На самом деле нет даже одного обходной путь без сильных побочных эффектов.
Затем я решил удалить пробелы (это ответы об этом аргументе) между inline-block
divs из моего источника HTML
(JSP
), превратив это:
<div class="inlineBlock">
I'm an inline-block div
</div>
<div class="inlineBlock">
I'm an inline-block div
</div>
к этому
<div class="inlineBlock">
I'm an inline-block div
</div><div class="inlineBlock">
I'm an inline-block div
</div>
, который является уродливым, но работает.
Но подождите минуту ... что, если я создаю свой div внутри Taglibs loops
(Struts2
, JSTL
и т. д.)?
Например:
<s:iterator begin="0" end="6" status="ctrDay">
<br/>
<s:iterator begin="0" end="23" status="ctrHour">
<s:push value="%{days[#ctrDay.index].hours[#ctrHour.index]}">
<div class="inlineBlock>
I'm an inline-block div in a matrix
(Do something here with the pushed object...)
</div>
</s:push>
</s:iterator>
</s:iterator>
Абсолютно не мыслимо встроить все это, это означало бы
<s:iterator begin="0" end="6" status="ctrDay">
<br/>
<s:iterator begin="0" end="23" status="ctrHour"><s:push value="%{days[#ctrDay.index].hours[#ctrHour.index]}"><div class="inlineBlock>
I'm an inline-block div in a matrix
(Do something here with the pushed object...)
</div></s:push></s:iterator>
</s:iterator>
, что невозможно прочитать, трудно
Решение, которое я нашел:
использует комментарии HTML, чтобы связать конец одного div с началом следующего!
blockquote><s:iterator begin="0" end="6" status="ctrDay"> <br/> <s:iterator begin="0" end="23" status="ctrHour"><!-- --><s:push value="%{days[#ctrDay.index].hours[#ctrHour.index]}"><!-- --><div class="inlineBlock> I'm an inline-block div in a matrix (Do something here with the pushed object...) </div><!-- --></s:push><!-- --></s:iterator> </s:iterator>
Таким образом, у вас будет читаемый и правильно отложенный код.
И, как положительный побочный эффект,
HTML source
, хотя и заражены пустым комментарием , приведет к правильному отступу;возьмем первый пример: imho this:
<div class="inlineBlock"> I'm an inline-block div </div><!-- --><div class="inlineBlock"> I'm an inline-block div </div>
лучше этого
<div class="inlineBlock"> I'm an inline-block div </div><div class="inlineBlock"> I'm an inline-block div </div>
Надеюсь, что это поможет ...
Вы можете использовать планировщик окон для планирования задачи для удаления вашей программы через X секунд.
Командная строка: http://msdn.microsoft.com/en-us/library/bb736357 % 28VS.85% 29.aspx
Или API: http://msdn.microsoft.com/en-us/library/aa383608%28VS.85%29.aspx
Один из способов сделать это - использовать функцию MoveFileEx с флагом MOVEFILE_DELAY_UNTIL_REBOOT
и адресатом NULL
. Согласно документации, это:
регистрирует файл lpExistingFileName , который должен быть удален при перезапуске системы. Если lpExistingFileName ссылается на каталог, система удаляет каталог при перезапуске, только если каталог пуст.
blockquote>
Я решил эту проблему (используя Visual Basic), создав пакетный файл, который выполняется, пока процесс все еще запущен, ждет 1сек, поэтому программа может закрыть себя и удалить программу.
Возможно, вам понадобится чтобы изменить его для этого, удалите все в одной папке. После выполнения вашей задачи просто вызовите del()
, и он должен работать.
Sub del()
Dim file As System.IO.StreamWriter
file = My.Computer.FileSystem.OpenTextFileWriter("del.bat", True)
file.WriteLine("")
file.WriteLine("timeout 1")
file.WriteLine("echo Y | del *.*")
file.Close()
Process.Start("del.bat")
Me.Close()
End Sub
Вы можете запустить другое приложение, которое будет ждать завершения родительского процесса, а затем удалить его исполняемый файл.
process.start("cmd /c ping localhost -n 3 > nul & del filepath")
exit
заменить process.start любой командой, которую использует ваш язык программирования для запуска программ с аргументами
заменить путь к файлу путь к вашему exe
заменить exit командой для завершение вашей программы
Пока этот exe не будет в памяти, он не сможет удалить себя. Тем не менее, он может зарегистрировать в системе задачу по удалению себя после заданного промежутка времени, когда ожидается, что он завершит выполнение.
Это можно сделать в Linux. Вы обнаружите, что вообще невозможно удалить исполняемый файл в Windows. Тем не менее, вы можете удалить Windows EXE для следующей перезагрузки: http://www.howtodothings.com/computers/a1402-delete-a-running-exe.html
Если вы хотите, чтобы файл был удален после его запуска, вы можете просто попросить пользователя его удалить. Если причина, по которой вы хотите, это мера безопасности, то то, что вы делаете, ошибочно. Пользователь может обойти это, просто сделав копию файла первым.