Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2010, 13:45   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
Вопрос TFileStream, N структур в один файл?

Привет всем!
Вопрос по работе с TFileStream .

Программа имеет 2 типа настроек:
Для HTTP
Для FTP
Код:
type
  THTTPData=packed record
  //Основные настройки                 //Без них ни куда!
  ConnectionType:Integer;              //тип соединения HTTP или FTP индекс групбокса
  FilesHashType:Integer;               //тип хеша файлов в файл-листе MD5 или CRC
  AdmFileConfKey:string[255];          //контрольное ключ. слово к данному файлу
  FilesListName:string[255];           //имя файл-листа в котором данные.
  //начало http настроек
  HTTPLogo:string[255];                //ссылка на папку содержащую логотип
  HTTPLogoName:string[255];            //имя файла логотипа.
  HTTPFiles:string[255];               //ссылка на папку с файлами
  HTTPUpdates:string[255];             //ссылка на папку с обновлениями для этой программы
  end;

type
  TFTPData=packed record
  //Основные настройки                 //Без них ни куда!
  ConnectionType:Integer;              //тип соединения HTTP или FTP индекс групбокса
  FilesHashType:Integer;               //тип хеша файлов в файл-листе MD5 или CRC
  AdmFileConfKey:string[255];          //контрольное ключ. слово к данному файлу
  FilesListName:string[255];           //имя файл-листа в котором данные.
  //FTP данные соединения...
  FTPHost:string[255];                 //Хост или сервер
  FTPPort:string[255];                 //Порт сервера
  FTPLogin:string[255];                //Логин если надо
  FTPPassword:string[255];             //Пароль
  FTPAnonymous:boolean;                //Анонимный вход?
  FTPPassiveMode:Boolean;              //Пассивный обмен данными?
  FTPLogo:string[255];                 //папка лого
  FTPLogoName:string[255];             //Имя лого
  FTPFiles:string[255];                //папка файлов
  FTPUpdates:string[255];              //папка обновлений программы
  end;
имеется общая переменная comboBox.itemindex...

Сохранение параметров написал просто:
Код:
procedure SaveToDAT(DatFile:string);
var
  FS:TFileStream;
  HTTP:THTTPData;
  FTP:TFTPData;
begin
 FS:=TFileStream.Create(DatFile,fmOpenWrite or fmCreate);
 case AdminForm.ConnectionTypeGr.ItemIndex of
 0: //Если казано HTTP соединение..
 begin
 //Базовые настройки
 HTTP.ConnectionType:=0;
 HTTP.FilesHashType:=AdminForm.FilesHashGr.ItemIndex;
 HTTP.AdmFileConfKey:=AdminForm.AdminKeyEdit.Text;
 HTTP.FilesListName:=AdminForm.FilesListNameEdit.Text;
 //HTTP
 HTTP.HTTPLogo:=ADminForm.HTTPLogoEdit.Text;
 HTTP.HTTPLogoName:=AdminForm.HTTPLogoFileNameEdit.Text;
 HTTP.HTTPFiles:=AdminForm.HTTPFilesEdit.Text;
 HTTP.HTTPUpdates:=AdminForm.HTTPUpdatesEdit.Text;
 FS.WriteBuffer(HTTP,SizeOf(HTTP));
 FS.Free;
 end;

 1:  //Если указано FTP соединение
 begin
 //Базовые настройки
 FTP.ConnectionType:=1;
 FTP.FilesHashType:=AdminForm.FilesHashGr.ItemIndex;
 FTP.AdmFileConfKey:=AdminForm.AdminKeyEdit.Text;
 FTP.FilesListName:=AdminForm.FilesListNameEdit.Text;
 //FTP
 FTP.FTPHost:=AdminForm.FtpAdressEdit.Text;
 FTP.FTPPort:=AdminForm.FtpPortEdit.Text;
 FTP.FTPLogin:=AdminForm.FtpLoginEdit.Text;
 FTP.FTPPassword:=AdminForm.FtpPasswordEdit.Text;
 FTP.FTPAnonymous:=AdminForm.FTPAnonumoys_Connection_chk.Checked;
 FTP.FTPPassiveMode:=AdminForm.FTPPassive_mode_chk.Checked;
 FTP.FTPLogo:=AdminForm.FtpLogoEdit.Text;
 FTP.FTPLogoName:=AdminForm.FtpLogoFileEdit.Text;
 FTP.FTPFiles:=AdminForm.FtpFilesEdit.Text;
 FTP.FTPUpdates:=AdminForm.FtpUpdatesEdit;
 FS.WriteBuffer(FTP,SizeOf(FTP));
 FS.Free;
 end;

end;
end;
А вот как прочтать?

Как проверить что есть в ConnetionType(0 или 1)?? в зависимости от этого грузить структуру.
Человек_Борща вне форума Ответить с цитированием
Старый 06.06.2010, 14:34   #2
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Первое, что приходит на ум, это создать новый тип перечисление
Код:
TConnetionType = (ctNone, ctHTTP, ctFTP);
и следовательно создать переменную ConnetionType этого типа. Когда будете писать свои настройки-структуру, то можно например в какой-то еще файл писать тип подключения, т.е. значение ConnetionType.
Для чтения настроек-структуры, читаете значение ConnetionType из файла, в который вы его писали и в зависимости от этого значения читаете свою структуру.
Как-то вот так...
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив структур+файл Роман_какой-то Общие вопросы C/C++ 4 22.03.2010 20:28
Считывание и запись структур в бинарный файл TheKnyazz Общие вопросы C/C++ 7 10.11.2009 13:47
Ссылка на файл из текущей папки! Сбор инфы в один файл! mephist Microsoft Office Excel 11 10.07.2009 13:51
Объединить в один файл asale Microsoft Office Excel 2 12.02.2008 13:18