Работа с файлами

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Работа с файлами

Сообщение xqz_me » 23.01.2006 (Пн) 23:00

Наверное, тема сто раз обсуждалась, но всё-таки...

Есть массив (размером от 0 до 10000 байт), надо при помощи стандартного диалога Save/Open As
а) при нажатии одной кнопки спасти этот массив в файл, путь и название которого укажет пользователь из этого диалога
б) при нажатии другой кнопки, открыть файл по пути, который укажет пользователь, и записать его в массив.

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 23.01.2006 (Пн) 23:12

Посмотри тут, тут и тут

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 23.01.2006 (Пн) 23:28

А так не подскажите?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 24.01.2006 (Вт) 0:54

Добрый я... Что бы вы без меня делали...
Вложения
ForEQZ_ME.rar
А вот как это сделать ...
(2.22 Кб) Скачиваний: 59
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 24.01.2006 (Вт) 14:14

Да уж... Спасибо огромное! :)

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 24.01.2006 (Вт) 14:46

И ещё один маленький вопросик... Как определить количество символов в открываемом таким способом файле?

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 24.01.2006 (Вт) 14:54

Кол-во символов есть размер файла (учитываются все символы включая Chr(13), chr(10) и т.д.). А размер файла у нас определяется с помощью GetFileSize.

Код: Выделить всё
Declare Function GetFileSize Lib "kernel32" Alias "GetFileSize" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long
А я все практикую лечение травами...

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 24.01.2006 (Вт) 15:40

И как с этой радостью обращаться?
Код: Выделить всё
MsgBox GetFileSize(CommonDialog.FileName, 10000)

Так ругается на type mismach...

И ещё вопрос... Как в поле Files of type добавить своё расширение и заставлять дописывать его в название файла?

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 24.01.2006 (Вт) 15:52

Надо сначала файл открыть, так как в GetFileSize передается дескриптор. Открыть: OpenFile.

Код: Выделить всё
Declare Function OpenFile Lib "kernel32" Alias "OpenFile" (ByVal lpFileName As String, lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As Long
А я все практикую лечение травами...

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 24.01.2006 (Вт) 15:54

Но я обычно юзаю CreateFile. Вообщем смотри APIGuide
А я все практикую лечение травами...

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 24.01.2006 (Вт) 15:57

Я его уже в common dialog-e открыл. Посмотри пример Хакера. Зачем его ещёраз открывать? Можно как-нить по-другому?

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

Сообщение GSerg » 24.01.2006 (Вт) 15:59

:roll:
Прикалываются люди, что ли...

Люди, вы прикалываетесь? :roll:

filelen() для закрытых файлов, LOF() для открытых...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 24.01.2006 (Вт) 16:01

2 GSerg

Да уж... Привычка, блин - все на АПИ...
А я все практикую лечение травами...

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 24.01.2006 (Вт) 16:01

нет, они ищут приключений на свой код :lol:

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 24.01.2006 (Вт) 16:04

Программист легких путей не ищет!... :wink:
А я все практикую лечение травами...

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 24.01.2006 (Вт) 16:11

С этим разобрался. А про это подскажите?
И ещё вопрос... Как в поле Files of type добавить своё расширение и заставлять дописывать его в название файла?

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 24.01.2006 (Вт) 20:00

И с этим разобрался. Теперь такой вопрос... В конец файла независимо от размеров массива и его содержимого всегда дописываются символы chr(13) и chr(10). Как с этим бороться?

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

Сообщение keks-n » 24.01.2006 (Вт) 20:18

Открывай For Binary
Изображение

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

Сообщение alibek » 24.01.2006 (Вт) 20:24

Как ты сохраняешь?
Если через Print, то ставь в конце точку с запятой.
Lasciate ogni speranza, voi ch'entrate.

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 24.01.2006 (Вт) 20:25

Вроде так и делается. Посмотри код, выложенный хакером.

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

Сообщение alibek » 24.01.2006 (Вт) 20:27

Не так.
Lasciate ogni speranza, voi ch'entrate.

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 24.01.2006 (Вт) 20:32

Глюк какой-то... Своё предыдущее сообщения я выложил до твоего предыдущего, а получилось наооборот.. :)

Теперь всё нормально, спасибо. А зачем точку с запятой ставить, чтоб нормально работало? Почему сразу нельзя?

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

Сообщение alibek » 24.01.2006 (Вт) 20:34

Потому что точка с запятой в конце оператора означает не ставить перевод строки (CR + LF).
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение keks-n » 24.01.2006 (Вт) 20:36

Наследие "консольного" вывода в QBasic
Изображение

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

Сообщение alibek » 24.01.2006 (Вт) 21:03

Вообще-то это наследие самых первых бейсиков, тех, которые со строками работать не умели.
Lasciate ogni speranza, voi ch'entrate.


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

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

Сейчас этот форум просматривают: AhrefsBot, Google-бот, SemrushBot и гости: 193

    TopList