Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2012.03.18;
Скачать: [xml.tar.bz2];

Вниз

Типизированный текстовый файл. Переход с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.003 c
15-1313642062
runer
2011-08-18 08:34
2012.03.18
Как расшарить принтер в WIN7?


2-1322847714
ffffffee
2011-12-02 21:41
2012.03.18
Как отправить Record через IdTCPClient ?


2-1322695608
cahier
2011-12-01 03:26
2012.03.18
ОБРАБОТКА ТЕКСТА


11-1242636990
Демьян
2009-05-18 12:56
2012.03.18
Drag n Drop из ListView в ListView


6-1253273863
McNail
2009-09-18 15:37
2012.03.18
Как получить Cookies с сайта? (Indy 9)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский