Как создать EXE-файл наибольшего размера?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 09.03.2006 (Чт) 15:48

Не больше 2 Гб. Гы гы.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

minotawr
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 195
Зарегистрирован: 08.01.2006 (Вс) 12:38
Откуда: Курск

Сообщение minotawr » 09.03.2006 (Чт) 15:50

А для создания такого файла - напихай на форму графики в опупенном расширении, и слоями, слоями, а потом на таймер посади отображение и тестируй

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 09.03.2006 (Чт) 15:53

Нафига?
Поместить в ресурсы AVI-файл.
Глупо, конечно, но не более, чем заявленное требование в пилотном посте.
Lasciate ogni speranza, voi ch'entrate.

minotawr
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 195
Зарегистрирован: 08.01.2006 (Вс) 12:38
Откуда: Курск

Сообщение minotawr » 09.03.2006 (Чт) 15:56

Хм, я прикололся, в ресурсы попробовал образ диска DWD залить, васик выкинуло в эрор :)

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 09.03.2006 (Чт) 16:12

Дописать EXE нулями до 2 ГБ и всё.

Код: Выделить всё
Open "myfile.exe" For Binary As #1
Put #1, &H7FFFFFFF, Chr(0)
Close
Изображение

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 09.03.2006 (Чт) 16:36

Совершенно верно, все описано в спецификациях: http://msdn.microsoft.com/library/defau ... ormats.asp

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 09.03.2006 (Чт) 17:19

Бред. Читай PE формат. Если дописать в конец EXE данный, то они будут вне всяких секций и не повлияют на работу(если такое влияние не предусмотрено в коде, в частности: использование дописанных ранее данных, подсчёт CRC)
Последний раз редактировалось keks-n 09.03.2006 (Чт) 17:25, всего редактировалось 1 раз.
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 09.03.2006 (Чт) 17:21

keks-n
Нельзя в смысле "невозможно" и нельзя в смысле "не надо" - вещи разные...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 09.03.2006 (Чт) 17:26

Я посчитал, что сказано в смысле "невозможно". А WINRAR между прочим дописывает данные в конец EXE, когда делает self-extracting.
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 09.03.2006 (Чт) 17:33

Из всего обсуждения прямо вытекает, что "невозможно" не могло иметься в виду, keks-n...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Dex
Постоялец
Постоялец
 
Сообщения: 346
Зарегистрирован: 09.08.2004 (Пн) 16:11

Сообщение Dex » 09.03.2006 (Чт) 17:53

keks-n согласен с тобой + моно ещё хранить в константе в HEX виде=)
А вот примерчик простенький:
Код: Выделить всё
Dim mas() As Byte
Dim DLINA, i As Integer
DLINA = 1000
FileCopy App.Path & "\" & App.EXEName & ".exe", App.Path & "\New.exe"
ReDim mas(FileLen(App.Path & "\New.exe") - 1)
For i = vbNull To DLINA
Open App.Path & "\New.exe" For Binary As #1
Put #1, UBound(mas) * i, mas
Close #1
Next

Тока комп может зависнуть если DLINA очень большое значение
Можно нулями конечно как предложил keks-n. А этот способ назавём самокопирование самой себя в саму себя :)

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 09.03.2006 (Чт) 17:56

А где у тебя массив заполняется? А то он ведь нулики пишет :lol:
Изображение

Dex
Постоялец
Постоялец
 
Сообщения: 346
Зарегистрирован: 09.08.2004 (Пн) 16:11

Сообщение Dex » 09.03.2006 (Чт) 18:53

Ой забыл :oops:
Тогда вот так:
Код: Выделить всё
Dim mas() As Byte
Dim DLINA, i As Integer
DLINA = 2
FileCopy App.Path & "\" & App.EXEName & ".exe", App.Path & "\New.exe"
ReDim mas(FileLen(App.Path & "\New.exe") - 1)
Open App.Path & "\New.exe" For Binary As #1
Get #1, vbNull, mas
Close #1
For i = vbNull To DLINA
Open App.Path & "\New.exe" For Binary As #1
Put #1, UBound(mas) * i, mas
Close #1
Next

А то получается я твой метод стянул :)

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 09.03.2006 (Чт) 22:39

GSerg писал(а):Не больше 2 Гб. Гы гы.

Можно и больше: WinRar SFX-архив, к примеру, позволяет создавать. Другое дело, в FAT32 есть ограничение на размер файла, но это уже другая история.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 09.03.2006 (Чт) 22:50

Ограничение FAT32 -- это 4Гб, и с указанным GSerg-ом оно не имеет никакой связи.

Весь вопрос в том, что считать exe-файлом. Если мусор добавлять в одну из секций, то ограничение даже жёстче, чем 2Гб (образ файла не должен пересекаться с образами системных библиотек).

Если же, как и делает WinRAR, мусор просто дописывать в конец файла, то ограничения нет. Хоть на терабайт можете файл делать.
Изображение

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 09.03.2006 (Чт) 22:56

tyomitch писал(а):Ограничение FAT32 -- это 4Гб, и с указанным GSerg-ом оно не имеет никакой связи.

А я и не говорил, что ограничение FAT32 -- 2 ГБ. На своем опыте познакомился с ограничением 4 ГБ (когда не хотел копироваться бэкап, долго ломал голову над этой загадкой :) )
Ну а большие *.exe сам программно никогда не создавал (только WinRar'ом).
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 09.03.2006 (Чт) 23:12

сделал ехе в 144 гб, сейчас на форум выложу...
ХЎ

minotawr
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 195
Зарегистрирован: 08.01.2006 (Вс) 12:38
Откуда: Курск

Сообщение minotawr » 10.03.2006 (Пт) 8:57

:) :salut: :thumright:

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 10.03.2006 (Пт) 11:08

Мой код смотрел? &H7FFFFFFF-2ГБ. Выполнябельность не страдает.
Изображение

Dex
Постоялец
Постоялец
 
Сообщения: 346
Зарегистрирован: 09.08.2004 (Пн) 16:11

Сообщение Dex » 10.03.2006 (Пт) 14:07

redvasya тогда на тебе такой вариант :) :
Код: Выделить всё
Dim mas() As Byte
Dim DLINA, i As Integer
DLINA = 100
FileCopy App.Path & "\" & App.EXEName & ".exe", App.Path & "\" & App.EXEName & "1.exe"
ReDim mas(FileLen(App.Path & "\" & App.EXEName & "1.exe") - 1)
Open App.Path & "\" & App.EXEName & "1.exe" For Binary As #1
Get #1, vbNull, mas
Close #1
For i = vbNull To DLINA
Open App.Path & "\" & App.EXEName & "1.exe" For Binary As #1
Put #1, UBound(mas) * i, mas
Close #1
Next

При необходимости можно массив заполнять не самой прогай, а (нулями - прим. keks-n) или чем хочешь сам. И кстате
keks-n в твой вариант не мешает добавить образ самой проги, а то получается тока одни нули, примерно так:
Код: Выделить всё
Dim mas() As Byte
EXE_NAME = "ЗДЕСЬ УКАЗАТЬ ПУТЬ К ФАЛУ КОТОРЫЙ БУДЕМ РАСШИРЯТЬ"
ReDim mas(FileLen(EXE_NAME) - 1)
Open EXE_NAME For Binary As #1
Get #1, vbNull, mas
Close #1
Open "myfile.exe" For Binary As #1
Put #1, &H7FFFFFFF, Chr(0)
Close #1

keks-n твой вариант действительно работает тока всё таки выполняебальность страдает :wink: ждать приходится не мало.
Это keks-n чтоб чел понял лучше :wink: [/b]

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 10.03.2006 (Пт) 14:52

Ну образ кучу раз копировать это не есть гут. Его любой архиватор сожмёт до исходного состояния(равно как и с нулями), посему надо генерить каждый байт через Rnd :) .
Изображение

Dex
Постоялец
Постоялец
 
Сообщения: 346
Зарегистрирован: 09.08.2004 (Пн) 16:11

Сообщение Dex » 10.03.2006 (Пт) 18:17

Хотел же предложить :)
Но каждый раз rnd тут уж точно скорость работы проги упадёт...

Бяка
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 21.09.2005 (Ср) 21:28

Сообщение Бяка » 17.03.2006 (Пт) 1:13

Dex писал(а):keks-n твой вариант действительно работает тока всё таки выполняебальность страдает :wink: ждать приходится не мало.

добавь ДуйЕвентс или таймер поставь и пусть себе в фоновом режиме работает :roll: ,а юзера , пока у него винт засерается, позадалблювать всякими заполнениями форм типа введите ваше имя и вам настанет щастье и тд и тп

d3drm :P да , я в универе тоже так прикалывался на лентах по С++, забивал ехешник нулями до 4Гб сжимал в selfархив до 100 -200кб назвав к примеру "курсак по..." и выкладывал в универе ни компы ещё пеньки 166 :lol:


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 70

    TopList  
cron