Привет! Вопрос:есть способ как открыть любой файл(любое расширение) и записать это в любом виде в текстбокс или в ричтекстбокс? И самое главное, опять его сохранить как файл, чтоб он работал!!? Повторяю, вид любой, главное чтоб после открытия файла его можно было сохранить или скомпилить! У меня есть подозрения что этот вопрос глупый, т.к. я сам не понимаю зачем мне это надо! Чисто интересно! :)
Лень пробовать, но, имхо, если через RTB открыть и пересохранить экзешник, то он уже не запуститься - так что считаю, что вопрос вполне резонный, только неточно сформулированный.
Для этого тебе надо писать hex-editor, т.е. прогу, которая будет рассматривать файл не как текст, а как массив байтов. Для этого при открытии используешь For Binary Read/Write, вместо Input&Print используешь Get&Put - грузишь всё это в массив (ну или не грузишь, если планируешь создавать реально масштабируемую прогу) и выводишь куда-нить, где легко всё это редактировать можно и в текстбокс через табы. Только вся эта затея хороша в качестве задания для студентов, а в реальной жизни уже и так много hex editor'ов и очередной никому не нужен.
Да, вот! Спасибо Neco, я именно это и имел в виду! Можешь пример для
Для этого при открытии используешь For Binary Read/Write, вместо Input&Print используешь Get&Put - грузишь всё это в массив (ну или не грузишь, если планируешь создавать реально масштабируемую прогу) и выводишь куда-нить, где легко всё это редактировать можно и в текстбокс через табы.
Жирным шрифтом: не очень понятно, зачем в массив грузить?
Массив нужен, т.к. средства вывода (текст-, лист-боксы, таблицы) имеют свойство подтормаживать если кидать в них даже небольшое количество информации (мег - и они уже задумываются), поэтому надо заранее думать об оптимизации вывода. Т.е. если твоя таблица на экране не показывает более 50 элементов, то зачем сразу выводить тысячу? Поэтому надо выводить по требованию (юзай виртуальные списки), но если ты будешь по каждому требованию открывать файл, читать с диска и закрывать файл, то тормозить у тебя будет ещё сильнее (особенно, если файл на сетевом диске!). Поэтому вбухиваешь всё в массив и потом читаешь и редактируешь этот массив. По завершению, сохранил.
Однако, если тебе надо учитывать работу и с гиговыми файлами, то по-любому надо отказываться от массива (хотя можно создавать небольшой буфер для комфортного скролла и где-нить в фоновом потоке кусками подгружать его, по мере приближения к краю) и работать напрямую с источника.
Пример работы с файлами см. в примерах (сам не видел, но думаю есть) - чё-та мне сегодня влом прогить...
Private Sub Form_Load()
Dim ByteArray() As Byte
cd.Filter = "All Files|*.*"
cd.ShowOpen
fi = FreeFile
Open cd.FileName For Binary As #fi
ReDim ByteArray(LOF(1) - 1)
Get #fi, , ByteArray()
te1.Text = ByteArray()
Close #fi
End Sub
но там всё открывается аброкадаброй!
Пример моей программы:
1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?1?????R?R?R?R?R?R?S?X?i?:?9?Q???????S?B?6?`?G?G???????????G?9?^?G?E?X???????~???.?l?W?T?R?P?P?0?????????????????0?P?P?W?W?W? и.т.д. там на 10 страниц не поместится! Ну ладно, я говорил в любом виде, даже и в таком устраивает, а как (я принёс этот код на др. комп, скажем товарищу своему, и хочу у него сохранить как *.exe что для этого нужно сделать?