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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2007, 15:35   #1
MrGooD
 
Регистрация: 13.05.2007
Сообщений: 3
По умолчанию Нетипизированые файлы и string

Всем добрый день. Подскажите как правильно поступать в подобной ситуации или что я делаю не так. Есть нетипизированный файл, в котором храниться множество значений разных типов. При загрузки из этого файла, данные читаются криво, то есть выскакивает ошибка InvalidCursor. Мне кажется это потому что при чтении машина просто не знает какой длины string она должна считать.
MrGooD вне форума Ответить с цитированием
Старый 13.05.2007, 16:04   #2
ZhekON
Форумчанин
 
Аватар для ZhekON
 
Регистрация: 24.01.2007
Сообщений: 323
По умолчанию

можно исходник?
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
ZhekON вне форума Ответить с цитированием
Старый 13.05.2007, 17:27   #3
Yogurt
Пользователь
 
Аватар для Yogurt
 
Регистрация: 22.01.2007
Сообщений: 25
По умолчанию

Для того, чтобы корректно читать данные из нетипизированного файла надо знать размер этих даннах в байтах. Если в файле хранятся только строки, то можно попробовать читать его побайтно в символные переменные (в массив символов). В других случаях, если ты точно не знаешь структуры файла, то не сможешь его корректно прочитать.
Yogurt вне форума Ответить с цитированием
Старый 13.05.2007, 23:59   #4
MrGooD
 
Регистрация: 13.05.2007
Сообщений: 3
По умолчанию

Я знаю в каких конкретно местах должны быть строки, но не знаю их длину, в качестве выхода можно сделать так : перед строкой заносить int который будет равен длине записаной строки, и считав этот инт, я буду знать сколько читать из файла, чтобы не залезть в лишнее, правильно?
MrGooD вне форума Ответить с цитированием
Старый 14.05.2007, 00:02   #5
MrGooD
 
Регистрация: 13.05.2007
Сообщений: 3
По умолчанию

А вот и исходник, процедура записи в файл. Но врядли с ней станет легче Тут именно идея важна.

PHP код:
procedure TMainForm.N4Click(SenderTObject);
var 
F:File;
    
i,j:integer;
begin
  with DataModule1
.TransferJobs do
  
begin
    
if SaveDialog1.Execute then
    begin
      AssignFile
(F,SaveDialog1.FileName);
      
Rewrite(F);
      
BlockWrite(F,Number,SizeOf(Number));
      for 
i:=0 to Number-do
      
begin
        BlockWrite
(F,Jobs[i].Name,10);{SizeOf(Jobs[i].Name));}
        
BlockWrite(F,Jobs[i].Fields.Number,SizeOf(Jobs[i].Fields.Number));
        for 
j:=0 to Jobs[i].Fields.Number-do
        
begin
          with Jobs
[i].Fields.Fields[j] do
            
begin
              BlockWrite
(F,SourceName,SizeOf(SourceName));
              
BlockWrite(F,SourceType,SizeOf(SourceType));
              
BlockWrite(F,SourceLength,SizeOf(SourceLength));
              
BlockWrite(F,SourcePrec,SizeOf(SourcePrec));
              
BlockWrite(F,TargetName,SizeOf(TargetName));
              
BlockWrite(F,TargetType,SizeOf(TargetType));
              
BlockWrite(F,TargetLength,SizeOf(TargetLength));
              
BlockWrite(F,TargetPrec,SizeOf(TargetPrec));
            
end;
        
end;
      
end;
      
CloseFile(F);
    
end;
  
end;
end
MrGooD вне форума Ответить с цитированием
Старый 14.05.2007, 00:04   #6
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,534
По умолчанию

http://delphibasics.ru/BlockWrite.php
Alar вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
string medik Помощь студентам 12 29.10.2007 17:33
Как укоротить string UnD)eaD)Snake Общие вопросы Delphi 6 04.09.2007 17:18
два вредных вопроса:про асю и прикриплёные файлы файлы steck Свободное общение 3 17.06.2007 14:53
String и Integer bek@rt Общие вопросы Delphi 10 18.05.2007 19:02
BLOB в string _andrews_ БД в Delphi 0 20.04.2007 12:05