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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 07.05.2012, 08:37   #1
Anton911
Форумчанин
 
Аватар для Anton911
 
Регистрация: 23.08.2011
Сообщений: 171
По умолчанию Записать Array of AnsiChar в Array of AnsiChar

Всем привет, появилась проблема.
Код:
type ArchFiles=record
aFileNameChr:array[1..24] of AnsiChar;
end;

procedure GetFilesInfoFromImg;
  var
  FileNameChr: array[1..24] of AnsiChar;
begin
FileStream.Read(FileNameChr,24);
Files[FileIndex].aFileNameChr:=FileNameChr;
end;
На выделенной строке возникает ошибка E2008 Incompatible types, в чем проблема?
Каждый день узнаю новое...
Anton911 вне форума
Старый 07.05.2012, 08:48   #2
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Потому что это разные типы.

Если хочешь, чтобы они были одним типом - так и пиши:

Код:
type
  TArchName = array[1..24] of AnsiChar;

  TArchFiles = record
    aFileNameChr: TArchName;
  end;

procedure GetFilesInfoFromImg;
var
  FileNameChr: TArchName;
begin
  FileStream.Read(FileNameChr, SizeOf(FileNameChr));
  Files[FileIndex].aFileNameChr := FileNameChr;
end;
И вообще:
Код:
procedure GetFilesInfoFromImg;
begin
  FileStream.Read(Files[FileIndex].aFileNameChr, SizeOf(Files[FileIndex].aFileNameChr));
end;
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума
Старый 07.05.2012, 12:19   #3
Anton911
Форумчанин
 
Аватар для Anton911
 
Регистрация: 23.08.2011
Сообщений: 171
По умолчанию

Странная штука какаето
Код:
type
  TArchName = array[1..24] of AnsiChar;

procedure GetFilesInfoFromImg;
  var
  FileOffset:DWORD;
  FileStrange:DWORD;
  FileNameChr: TArchName;
  FileIndex:LongInt;
begin
Process.Min:=0;
Process.Max:=ElementCount;
SetLength(DeleteFiles,0);
DeleteFilesCount:=0;
try
Begin
 for FileIndex := 0 to 8 do
    Begin
    FilesCount:=FilesCount+1;
    SetLength(Files,FilesCount);
    ImgArhStream.Seek(FileIndex*32+8,0);  
    Files[FileIndex].aRecordFileOffset:=ImgArhStream.Position; 
    ImgArhStream.Read(FileOffset,4);    
    ImgArhStream.Read(FileStrange,4);  
    ImgArhStream.Read(FileNameChr,24);  
    Files[FileIndex].aFileOffset:=FileOffset;
    Files[FileIndex].aOldFileOffset:=FileOffset;
    Files[FileIndex].aFileStrange:=FileStrange;
    Files[FileIndex].aOldFileStrange:=FileStrange;
    Files[FileIndex].aFileNameChr:=FileNameChr;
    Files[FileIndex].aFileNameStr:=String(FileNameChr);
    With Files[FileIndex] do
    Begin
    Memo_Console.Lines.Add('Название '+aFileNameChr'
     +Файл: Номер '+IntToStr(FileIndex)
      +'; Размер в блоках '+IntToStr(aFileStrange)
        +'; Смещение в блоках '+IntToStr(aFileOffset)
          +'; Смещение записи в байтах '+IntToStr(aRecordFileOffset));
    End;
    Process.Position:=FileIndex;
    Form1.Caption:=IntToStr(FileIndex);
    End;
End;
except
on E: Exception do
  begin
  showmessage('Ошибка, не важно');
  end;
end;

end;
В мемо выводится
Код:
Название bbb_lr_slv1.dff
Название bbb_lr_slv2.dff
Название bntl_b_ov.dff
Название bntl_b_sq.dff
Название bntr_b_ov.dff
Название bntr_b_sq.dff
Название bnt_b_sc_l.dff
Название bnt_b_sc_m.dff
Название bnt_b_sc_p_l.dff
Остальное не выводится. А если переделаю строку так
Код:
   Memo_Console.Lines.Add('Файл: Номер '+IntToStr(FileIndex)
      +'; Размер в блоках '+IntToStr(aFileStrange)
        +'; Смещение в блоках '+IntToStr(aFileOffset)
          +'; Смещение записи в байтах '+IntToStr(aRecordFileOffset)
            +'; Название '+aFileNameChr);
Тогда нормально выводится как надо
Код:
Файл: Номер 0; Размер в блоках 5; Смещение в блоках 257; Смещение записи в байтах 8; Название bbb_lr_slv1.dff
Файл: Номер 1; Размер в блоках 3; Смещение в блоках 262; Смещение записи в байтах 40; Название bbb_lr_slv2.dff
Теперь всплывают побочные эффекты этой штуки. Функция поиска файла не находит файл, даже если название такого файла существует.
Код:
function FindFile(FileName:String):integer;
  var
    Res,FileIndex:integer;
begin
Res:=-1;
  for FileIndex := 0 to FilesCount - 1 do
    Begin
      if Files[FileIndex].aFileNameStr=FileName then
      Begin
      Res:=FileIndex;
      break;
      End;
    End;
Result:=Res;
end;
Помогите пожалуйсто разобраться.
Каждый день узнаю новое...

Последний раз редактировалось Anton911; 07.05.2012 в 12:22.
Anton911 вне форума
Старый 07.05.2012, 15:40   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Anton911, Вы серьёзно думаете, что по ОГРЫЗКУ Вышего кода, без описания, что это, для чего нужно, без исходников проекта, без исходных данных, кто-то посмотрит на код и скажет Вам, что Вы делаете не так?!!
Мне кажется, что это не очень вероятно..

p.s. Название темы - Записать Array of AnsiChar в Array of AnsiChar
мне кажется, что ответ GunSmoker это проблему разрешил, и то, что Вы тут продолжаете ВЫХОДИТ за рамки темы.
Думаю, что эту тему лучше закрыть, а обсуждение новой проблемы продолжить в новой (вновь Вами созданной теме), где Вы опишете суть проблемы и обеспечите форумчан возможностью лично смоделировать и пронаблюдать проблему.
А данную тему я бы закрыл. Согласны?!

Последний раз редактировалось Serge_Bliznykov; 07.05.2012 в 15:43.
Serge_Bliznykov вне форума
Старый 07.05.2012, 21:58   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Абсолютно согласен. Ответ дан четко.
I'm learning to live...
Stilet вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка AnsiChar Кристинка89 Общие вопросы Delphi 5 21.02.2012 21:26
widechar VS. ansichar virtuhay266 Общие вопросы Delphi 2 14.12.2011 09:10
str->array & array->str LeoN PHP 6 06.07.2010 22:38
Ошибка c AnsiChar & Char Яр|/||< (^_^) Общие вопросы Delphi 3 19.02.2010 21:22
Array или не array Димарик Общие вопросы Delphi 4 18.06.2007 15:16