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

Вниз

Бинарный вид. Представление textfile-а   Найти похожие ветки 

 
Officeman   (2005-12-05 15:58) [0]

В своего программе использую информационную базу. база основана на текстовых файлах с разделителями. При открытии из текстовых файлов все данные грузятся в TListView, потом при сохрании - данные обновляются (полностью файл). Вопрос.

как можно закондировать . ну хоть в бинарном виде записать. а потом перед  загрузкой в ListView перевести обратно в обыч.состояние.

если есть раб. примерчик. плиз. или совет. функцию какую

zeram@hotmail.ru


 
Tonich ©   (2005-12-05 16:10) [1]

так ё маё записывай не как в текстовый файл(writeln) а как в бинарный (BlockWrite)


 
Officeman   (2005-12-05 19:06) [2]

данный пример из хелпа дельфи.

типа откываем и потом сохраняем.
но при прочмотре через бокнот. ничё не меняется.
отчётливо вижу =) буквы.

или я чтото делаю не так


procedure TForm1.Button1Click(Sender: TObject);
var
 FromF, ToF: file;
 NumRead, NumWritten: Integer;
 Buf: array[1..2048] of Char;
begin
 if OpenDialog1.Execute then     { Display Open dialog box }
 begin
   AssignFile(FromF, OpenDialog1.FileName);
   Reset(FromF, 1); { Record size = 1 }
   if SaveDialog1.Execute then      { Display Save dialog box}
   begin
     AssignFile(ToF, SaveDialog1.FileName); { Open output file }

     Rewrite(ToF, 1); { Record size = 1 }
     Canvas.TextOut(10, 10, "Copying " + IntToStr(FileSize(FromF))
       + " bytes...");
     repeat
       BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
       BlockWrite(ToF, Buf, NumRead, NumWritten);
     until (NumRead = 0) or (NumWritten <> NumRead);
     CloseFile(FromF);
     CloseFile(ToF);
   end;
 end;
end;
end.


 
Officeman   (2005-12-06 07:22) [3]

ау.


 
ЮЮ ©   (2005-12-06 08:35) [4]

>но при прочмотре через бокнот. ничё не меняется.
>отчётливо вижу =) буквы.

Буквы, они и в Африке - буквы. А ты чего хотел видеть?


 
Offceman   (2005-12-06 12:10) [5]

Я хотел, каким-нибудь образом закрыть доступ к инф.базе (*.txt) простому пользователю. Полез он смотреть текстовые файлы. открывает, а там "абра-катабра". ну и непонимает ничё. Вот!.   какокнить простой метод нужен.
Привести этот текстовый файл в непонятный вид =). а при открытии длеать его понятным для заполнения полей ListView1


 
Anatoly Podgoretsky ©   (2005-12-06 14:11) [6]

Offceman   (06.12.05 12:10) [5]
Поместить на раздел с NTFS и отнять права у обычного пользователя.


 
OR   (2005-12-06 19:26) [7]

>Привести этот текстовый файл в непонятный вид

Можно зашифровать побайтно командой XOR


 
Officeman   (2005-12-07 10:12) [8]

to OR, вы чтто путаете "xor" это boolean операнд.

а если сделать смещением на 1, или писать не символы а их коды в текстовый файл. а при открытии читатьэти коды и писать буквы.
проканает? вобщем здесь можно пофантазировать =)


 
Anatoly Podgoretsky ©   (2005-12-07 10:21) [9]

Officeman   (07.12.05 10:12) [8]
Путаешь ты
Операторы and/or/xor существуют в двух вариантах boolean (логический) и bitwise (арифметический).


 
Officeman   (2005-12-07 12:11) [10]

спс.  будет ковырять "справку"


 
OR   (2005-12-07 15:54) [11]

Шифрование:

  Author: Colin Laplace (webmaster@bloodshed.nu)

  Public domain. Use this program at your own risk, and don"t use
  it if you are not allowed in your country/state
}
program Crypt;
{$APPTYPE CONSOLE}
uses Windows;

var key, text, longkey, result : string;
   i : integer;
   toto, c : char;
   F : TextFile;
begin
 writeln("Enter the key:");
 readln(key);
 writeln("Enter the text:");
 readln(text);

 for i := 0 to (length(text) div length(key)) do
     longkey := longkey + key;

 for i := 1 to length(text) do begin
     toto := chr((ord(text[i]) XOR ord(longkey[i]))); // XOR algorithm
     result := result + toto;
 end;
 writeln("The crypted text is:");
 writeln(result);
 write("Should i save it to result.txt ?");
 read(c);
 if c in ["Y","y"] then begin
    AssignFile(F,"result.txt");
    Rewrite(F);
    Writeln(F,result);
    CloseFile(F);
 end;
end.


Дешифрование:

{
  Sample application of the XOR algorithm for a simple
  Decrypt program

  Author: Colin Laplace (webmaster@bloodshed.nu)

  Public domain. Use this program at your own risk, and don"t use
  it if you are not allowed in your country
}
program Decrypt;
{$APPTYPE CONSOLE}
uses Windows;

var key, c_text, longkey, result : string;
   i : integer;
   toto : char;
   F : TextFile;
begin
 writeln("Enter the key:");
 readln(key);
 writeln("Please make sure you have the file "result.txt" in the current directory");
 // it takes the output file from Crypt.exe
 AssignFile(F,"result.txt");
 Reset(F);
 Readln(F,c_text);
 CloseFile(F);

 for i := 0 to (length(c_text) div length(key)) do
     longkey := longkey + key;

 for i := 1 to length(c_text) do begin
     toto := chr((ord(c_text[i]) XOR ord(longkey[i]))); // XOR algorithm
     result := result + toto;
 end;
 writeln("The decrypted text is:");
 writeln(result);
 readln;
end.


 
Officeman   (2005-12-14 21:44) [12]

to OR, да примеры хороши! при шифрофке одной строки всё рабоатет нормально. но в цикле чтото неполучается. набросал примерчик
http://zeram.hotmail.ru/Kripto.rar

форма. состоит из  TLIstView и 4 кнопки.
1) загрузка  в TListView из текстового файла с разделителями ";"
2) выгрузка из ListView в текстовый файл с разделителями

ну вобщем прошу помощи. написать 3 и 4 кнопку.  правильно использовав процедуры 1 и 2 кнопки - вместе с обработкой "XOR".

немогу вьехать. почемуто глатаются пробелы. и не все строки РАСшифровываются !!! может что нет так делаю. если у кого будет время - ПОМОГИТЕ ПОЖАЛУЙСТА...
мне базу надо зашифровать\расшифровать. в реале не успею. =(

надо реализовать 3 и 4 кнопку, по аналогии 1 и 2 но с использованием XOR

с Уважением, ZERAM


 
Officeman   (2005-12-15 08:55) [13]

Разобрался почему не работает. XOR непонимает ЦИФРЫ...  ;(
Моя база состоит из строк такого вида:

15.gif;Шлем Ненависти;;;;5;45,00;0;0;+9;0;0;+4;0;0;0;0;0;+20;0;+20;0;0;0;0;+35;0;0;0;0;Шлемы;
4.gif;Амулет Достоинства;;;;3;15,20;0;0;+5;0;+4;0;0;+15;0;0;0;+20;0;0;0;0;0;0;0;0;0;0;0;Амулеты;
17.gif;Панцирь Мужества;;;;3;15.10;0;0;+6;0;0;+2;0;0;0;0;0;+15;0;0;0;0;0;0;0;+25;0;0;0;Латы;

включающая буквы и цифры. цмфры тоже надо ШИФРОВАТЬ вместе с текстом. хотя я щас думаю что можно впринципе и не шифровать цифры.
но если есть вариант ШИФРОВАТЬ ВСЁ ВМЕСТЕ. подскажите =)

с Уважением, Officeman


 
alex_*** ©   (2005-12-15 09:37) [14]

а тебе не пофиг что за текст ты шифруешь? цифра-не цифра это переменная в 1 байт ну и прогони по ней XOR


 
Officeman   (2005-12-15 14:52) [15]

т.е. ты предлагаешь перевести всё в бинарный вид,
и потом прогнать через XOR .. ??? или как ?

помучто она не признает ЦИФРЫ.. как только встречается на пути [i]
цифра. сразу прерывается цикл


 
Хинт ©   (2005-12-15 15:01) [16]

Что значит перевести в бинарный вид? В зависимости от интерпритации один байт может быть буквы или числом от 0 до 255.

Используй Ord и Chr


 
Anatoly Podgoretsky ©   (2005-12-15 15:10) [17]

О каких текстовых файлах может идти речь, ведь в результате шифрования получаются все коды от 0 до 255


 
Officeman   (2005-12-16 08:04) [18]

используя ключ, получаю из строки

15.gif;Шлем Ненависти;;;;5;45,00;0;0;+9;0;0;+4;0;0;0;0;0;+20;0;+20;0;0;0;0;+35;0;0;0;0;Шлемы;

такую

15.gif;йЫЦЭЯФФЮКЩ;;;;5;45,00;0;0;+9;0;0;+4;0;0;0;0;0;+20;0;+20;0;0;0;0;+35;0;0;0;0;Шлемы;

я шифровал, только НАИМЕНОВАНИЕ. хотелось бы всё зашифровать.

конечно можно сделать собственную табличку, присвоить каждой цифре какойнить символ"букву" и пришифровании заменять. =)) но както глупо это.


 
ЮЮ ©   (2005-12-16 08:30) [19]

>я шифровал, только НАИМЕНОВАНИЕ.
Как?

>хотелось бы всё зашифровать.
Сделай тоже самое только для всей строки!



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

Форум: "Начинающим";
Текущий архив: 2006.01.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.011 c
14-1133868566
syte_ser78
2005-12-06 14:29
2006.01.01
Вопрос по возможностям электропитания ЮСБ устройства


14-1133853822
nk
2005-12-06 10:23
2006.01.01
Кто может подсказать...


14-1134134406
Piero
2005-12-09 16:20
2006.01.01
Оценка производительности алгоритмов


8-1122063113
Retryator
2005-07-23 00:11
2006.01.01
Графические Аппертуры


14-1134052240
begin...end
2005-12-08 17:30
2006.01.01
С Днём рождения! 8 декабря





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский