Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.03.18;
Скачать: CL | DM;

Вниз

Типизированный текстовый файл. Переход с Delphi 7 на Delphi XE   Найти похожие ветки 

 
I_D ©   (2011-12-04 12:14) [0]

Доброго времени суток!
Новую версию программы перевожу с Delphi 7 на Delphi XE.  Необходимо соблюсти совместимость к уже наработанным программой фалами с данными. Использовал типизированные текстовые файлы. Хранил там криптованный текст. На Delphi 7 выглядело так (упрощенный пример)

procedure TForm3.Button1Click(Sender: TObject);
type
 DataFile = record
   BegCyc: TDate;
   Colday: 0..31;
   NoteCyc: string[255];
 end;
var
DataArray: array of DataFile;
FData: file of DataFile;
i: integer;
df : DataFile;

 function Crypt(varStr: String):String;
     var
      k: integer;
      s: string;
     begin
        RandSeed:=100;
        s:=varStr;
        for k:=1 to Length(s) do
         s[k]:=Chr(ord(s[k]) xor (Random(255)+1));
        Crypt:=s;
  end;
begin
// присваиваю значение массиву
SetLength(DataArray,1);
DataArray[0].BegCyc := now;
DataArray[0].Colday := 1;
DataArray[0].NoteCyc := Crypt("тест");  //  криптую
// записываю в файл файл
AssignFile(FData, ExtractFilePath(Application.ExeName)+"test.txt");   { File selected in dialog box }
ReWrite(FData);
   Seek(FData, FileSize(FData));
   for i:=0 to Length(DataArray)-1 do
     begin
      Write(FData, DataArray[i]);
     end;
CloseFile(FData);
// обнуляю массив
SetLength(DataArray, 0);
// считываю с файла
AssignFile(FData, ExtractFilePath(Application.ExeName)+"test.txt");   { File selected in dialog box }
Reset(FData);
   Seek(FData,0);
   SetLength(DataArray, FileSize(FData));
   i:=0;
   try
       while not Eof(FData) do
         begin
          Read(FData, df);
          DataArray[i]:=df;
          DataArray[i].NoteCyc:=Crypt(DataArray[i].NoteCyc);    // декриптую
          i:=i+1;
         end;
   except
   end;

CloseFile(FData);
// должно быть соло тест
label1.Caption :=  DataArray[0].NoteCyc;
end;


В Delphi XE ShortString юникод не поддерживает, по этому переделал так

type
 MyShortStr = array[0..127] of WideChar;
 DataFile = record
   BegCyc: TDate;
   Colday: 0..31;
   NoteCyc: MyShortStr;
 end;

Из текстового файла предыдущей версии программы даты считываются нормально, но вот поле NoteCyc имеет китайские иероглифы :) Подскажите, пожалуйста, корректное решение в моей ситуации?
Спасибо.


 
Anatoly Podgoretsky ©   (2011-12-04 12:19) [1]

Типизированых текстовых файлов не бывает.


 
Плохиш ©   (2011-12-04 13:27) [2]


> В Delphi XE ShortString юникод не поддерживает

Они юникода отрадясь не поддерживали.


 
Gu   (2011-12-04 14:02) [3]

аналогия d7-Xe

string=ansistring

shortstring=ansistring[255] (думаю, тк будет лучше, а не shortstring=shortstring)

char=ansichar (а не wide как у вас)

если у вас все string до 255 тогда и string=ansistring[255]

переделайте соответсвенно и все заработает

еще советую почитть
http://easyprog.ru/index.php?option=com_content&task=view&id=218&Itemid=35
и
http://embt.ru/reasonds-to-migrate-to-delphi-xe-rus.pdf (там про строки абзац 100% Unicode)


 
I_D ©   (2011-12-04 15:02) [4]


> shortstring=ansistring[255]

procedure TForm3.Button1Click(Sender: TObject);
var
sstr: ansistring[255];
begin

end;

[DCC Error] Unit3.pas(28): E2029 ";" expected but "[" found

:(


 
MBo ©   (2011-12-04 15:51) [5]

почему бы не прочитать string types в хелпе?


 
Плохиш ©   (2011-12-04 16:28) [6]


> MBo ©   (04.12.11 15:51) [5]
>
> почему бы не прочитать string types в хелпе?

Как ты смеешь над "высшим образованием" издеваться?


 
I_D ©   (2011-12-04 16:50) [7]


> Как ты смеешь над "высшим образованием" издеваться?

Я по образованию электро-механик :)


 
I_D ©   (2011-12-04 17:00) [8]


> Как ты смеешь над "высшим образованием" издеваться?

Я по образованию электро-механик :)


 
I_D ©   (2011-12-04 17:10) [9]


> почему бы не прочитать string types в хелпе?

 Хватит новичка ногами пинать :) Подскажи, если знаешь. Ну а с хелпа я начинал. Не нашел там то что искал. Не свыкся я еще с хелпом от Delphi XE


 
Плохиш ©   (2011-12-04 17:28) [10]


> Я по образованию электро-механик

И что? пту закончил и только провода прикрутить умеешь, и то под руководством?


 
Плохиш ©   (2011-12-04 17:33) [11]


> Хватит новичка ногами пинать

Кому ты нужен?
К тому же уже подсказали уже, остальное в справке описано.


 
I_D ©   (2011-12-04 17:41) [12]


> Плохиш

Думаю, что ты знаешь в Делфи еще меньше меня. Разводишь словоблудие вокруг простого вопроса с простым примером.

Gu - подсказал по теме, а ты - клавиатуру топчешь.



Страницы: 1 вся ветка

Текущий архив: 2012.03.18;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.007 c
15-1322326868
boriskb
2011-11-26 21:01
2012.03.18
Вакансии


15-1322080202
Юрий
2011-11-24 00:30
2012.03.18
С днем рождения ! 24 ноября 2011 четверг


2-1323074117
Бездомный
2011-12-05 12:35
2012.03.18
Как получить данные из DataSet не меняя его активную запись.


2-1323039127
Мишаня7-8
2011-12-05 02:52
2012.03.18
Как задать кодировку текстовому файлу


4-1255265451
Alexei
2009-10-11 16:50
2012.03.18
Отслеживание моментов входа в ОС (WinXP)?