Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выгрузить и загрузить динамический массив 
:(
    Опции темы
DenageS
Дата 29.12.2006, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 29.9.2006

Репутация: нет
Всего: нет



Массив имеет определенную структуру:
число1,число2
число3,число4 и т.д.
Каким образом его можно выгрузить и загрузить обратно в такой же массив. Ну хотя как выгрузить это я представляю... Помогите пожалуйста
PM MAIL ICQ   Вверх
Kirill89
Дата 29.12.2006, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: 3
Всего: 4



Не понял вопроса. Вы имеете в виду как скопировать массив? или скопировать его в файл и обратно?


--------------------
PM MAIL WWW   Вверх
DenageS
Дата 30.12.2006, 05:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 29.9.2006

Репутация: нет
Всего: нет



Именно записать в файл. Сейчас пытаюсь записать в цикле его в двоичный файл, но пока не получается. Вернее выгрузить его кажется получилось правильно.
PM MAIL ICQ   Вверх
W4FhLF
Дата 30.12.2006, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 3
Всего: 121



Ну а загрузить ещё проще. Грузишь его из файла в переменную String/Variant и делаешь: 
Код

dim arr
arr = Split(DataFromFile, vbCrLf)



--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Kirill89
Дата 30.12.2006, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: 3
Всего: 4



Цитата(DenageS @  30.12.2006,  05:25 Найти цитируемый пост)
Сейчас пытаюсь записать в цикле его в двоичный файл

А зачем в двоичный?
Код

option base 1
dim arr(10)
' выгрузка
Open "путь" For Output As #1
   for i=1 to 10
        Print #1, arr(i)
   next i
Close #1
' загрузка
Open "путь" For Input As #1
   for i=1 to 10
        Input #1, arr(i)
   next i
Close #1



--------------------
PM MAIL WWW   Вверх
W4FhLF
Дата 30.12.2006, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 3
Всего: 121



Цитата

А зачем в двоичный?


Данные не строковые.


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Kirill89
Дата 30.12.2006, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: 3
Всего: 4



А какой тип данных?
Таким способом можно, вроде, и в двоичный файл писать.


--------------------
PM MAIL WWW   Вверх
DenageS
Дата 31.12.2006, 06:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 29.9.2006

Репутация: нет
Всего: нет



Спасибо огромное! Но я уже сделал выгрузку в цикле в файл произвольного доступа. В цикле перебираются индексы массива и каждый индекс пишется в строку с соответствующим номером.

Добавлено @ 06:12 
Можно еще вопросик. Есть ли какая нибудь функция, с помощью которой можно узнать размерность массива?
PM MAIL ICQ   Вверх
boevik
Дата 31.12.2006, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



Ubound(arr) - возвращает верхнюю границу массива.


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
W4FhLF
Дата 31.12.2006, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 3
Всего: 121



Цитата

А какой тип данных?


Прочти первый пост:
Цитата

число1,число2
число3,число4



--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Kirill89
Дата 31.12.2006, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: 3
Всего: 4



Цитата(W4FhLF @ 31.12.2006,  09:59)
Цитата

А какой тип данных?


Прочти первый пост:
Цитата

число1,число2
число3,число4

мой способ тоже подошел - бы.


--------------------
PM MAIL WWW   Вверх
Akina
Дата 1.1.2007, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Произвольные данные все-таки лучше выгружать в XML. И загружать несложно, и совместимость, и N массивов в одном файле, и куча всего полезного... 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Black_Star
Дата 8.1.2007, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 9.9.2003
Где: Minsk

Репутация: 4
Всего: 4



Вот мой вариант:
Код

Option Explicit
'Сохранение массива
Sub SaveArr(ByVal ms_Filename As String, tmpArr As Variant)
Dim ml_LBound As Long
Dim ml_UBound As Long
Dim fr As Long

  ml_LBound = LBound(tmpArr)
  ml_UBound = UBound(tmpArr)
  
  fr = FreeFile
  Open ms_Filename For Binary As fr
  Put #fr, 1, ml_LBound
  Put #fr, 5, ml_UBound
  Put #fr, 10, tmpArr
  Close #fr
End Sub
'Загрузка массива
Sub LoadArr(ByVal ms_Filename As String, tmpArr As Variant)
Dim ml_LBound As Long
Dim ml_UBound As Long
Dim fr As Long
  
  fr = FreeFile
  Open ms_Filename For Binary As fr
  Get #fr, 1, ml_LBound
  Get #fr, 5, ml_UBound
  ReDim tmpArr(ml_LBound To ml_UBound)
  Get #fr, 10, tmpArr
  Close #fr
End Sub
'Пример использования:
Private Sub Command1_Click()
Dim mi_Age(1 To 5) As Integer
Dim ms_Name(2 To 10) As String

  mi_Age(3) = 35
  ms_Name(3) = "Alex"

  Call SaveArr("d:\age.txt", mi_Age)
  Call SaveArr("d:\name.txt", ms_Name)
End Sub
Private Sub Command2_Click()
Dim mi_Age2() As Integer
Dim ms_Name2() As String
Dim i As Integer

  Call LoadArr("d:\age.txt", mi_Age2)
  Call LoadArr("d:\name.txt", ms_Name2)
  For i = lbound(mi_age2) To ubound(mi_age2)
    Print i & ") " & mi_Age2(i)
  Next i
  For i = lbound(ms_name2) To ubound(ms_name2)
    Print i & ") " & ms_Name2(i)
  Next i
  
End Sub


Есть способ еще круче. Для этого просто надо использовать свои типы  smile 

Код

Private Type MyTYPE
  mi_AGE() As Integer
  mi_NAME() As String
End Type
Private Sub SaveArr(ByVal ms_FileName As String, sType As MyTYPE)
Dim fr As Long

  fr = FreeFile
  Open ms_FileName For Binary As fr
  Put #fr, 1, sType
  Close #fr
End Sub
Private Sub LoadArr(ByVal ms_FileName As String, lType As MyTYPE)
Dim fr As Long

  fr = FreeFile
  Open ms_FileName For Binary As fr
  Get #fr, 1, lType
  Close #fr
End Sub
Private Sub Command1_Click()
Dim mt_Info As MyTYPE

  ReDim mt_Info.mi_AGE(1 To 5)
  ReDim mt_Info.mi_NAME(2 To 10)
  
  mt_Info.mi_AGE(3) = 35
  mt_Info.mi_NAME(4) = "Alex"
  
  Call SaveArr("d:\info.txt", mt_Info)
End Sub
Private Sub Command2_Click()
Dim mt_Info2 As MyTYPE

  Call LoadArr("d:\info.txt", mt_Info2)
  For i = LBound(mt_Info2.mi_AGE) To UBound(mt_Info2.mi_AGE)
    Print i & ") " & mt_Info2.mi_AGE(i)
  Next i
  For i = LBound(mt_Info2.mi_NAME) To UBound(mt_Info2.mi_NAME)
    Print i & ") " & mt_Info2.mi_NAME(i)
  Next i
End Sub



PM ICQ   Вверх
Akina
Дата 8.1.2007, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(Black_Star @  8.1.2007,  13:31 Найти цитируемый пост)
Есть способ еще круче. Для этого просто надо использовать свои типы  

и что в нем, позвольте спросить, крутого? необходимость таскать везде определения типов?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Black_Star
Дата 9.1.2007, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 9.9.2003
Где: Minsk

Репутация: 4
Всего: 4



Akina,  ну как тебе сказать? Можно юзать кучу переменных и массивов. Выдумывать способ сохранения и считывания в 1 или несколько файлов. А можно использовать типы. А работу с типами организовывать в классах. Вот тогда поймешь насколько проще и эффективнее. ООП рулит  smile 
А "таскать" конечно необходимо! Никому, кроме программера, не интересно что внутри. А как ты организуешь алгоритм работы, так и будет. Потому ТОЛЬКО типы и классы!!!
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0693 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.