Форум: "Начинающим";
Текущий архив: 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