Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > что делает этот код?


Автор: Kvazilol 14.12.2007, 20:42
товарищи, нужен был алгоритм, нагуглил, а он не на том языке который я знаю...((( помогите пажалста, 
скажите хотябы что он делает (поточнее), порсто я не знаю этих функций, а узнавать  книжках долго а мне нужно быстро а то не успею

объхявления переменных  я понимаю, циклы тоже, условные переходы тоже (буду писать это на C#)
Код

var

F : file;

I : dword;

S : string;

N : array[1..5] of Char;

Buf : array[1..500] of Char;

R : TextFile;

begin

AssignFile(R,'Emails.txt');

ReWrite(R);

AssignFile(F,WABFile);

Reset(F,1);

if IOResult=0 then begin

repeat

BlockRead(F,N,2);

if N[1]+N[2]=#03#48 then begin

BlockRead(F,Buf,Ord(N[2])+30);

S:='';

for I:=1 to Ord(N[2])+30 do S:=S+Buf[I];

Delete(S,1,3);

I:=Pos(#00#00#00,S);

if I>0 then SetLength(S,I-1);

for I:=1 to Ord(N[2]) do if S[I]=#00 then Delete(S,I,1);

for I:=1 to Length(S) do

if S[I]0)and(Pos('.',S)>0) then

writeln(r,UpperCase(S));

end else Seek(F,FilePos(F)-1);

until FileSize(F)-FilePos(F)<6;

CloseFile(F);

end;

CloseFile(R);


ну.. сначала понятно а потом нет.. открываем файл.. читаем 2 байта? (или 2 буквы?)
Ord(N[2]) это что такое? ASCII код символа?
Delete(S,1,3);  вырезает из массивы элементы с 1 по 3й?
что делается при I:=Pos(#00#00#00,S);   и чтотакое вот эти штуки #00#00#00
что делает  SetLength(S,I-1)
что делает Seek(F,FilePos(F)-1);

спасибо ответившему!!! 


M
Alexeis
Модератор: Название темы должно отражать ее суть!

Автор: ivan219 14.12.2007, 21:31
Цитата(Kvazilol @  14.12.2007,  20:42 Найти цитируемый пост)
Ord(N[2]) это что такое? ASCII код символа?

Да в десятичной системе.
Цитата(Kvazilol @  14.12.2007,  20:42 Найти цитируемый пост)
Delete(S,1,3);  вырезает из массивы элементы с 1 по 3й?

Удалить из строки S с 1 позиции 3 символа т.е. если в S будет строка '1234' на выходе будет '4'.
Цитата(Kvazilol @  14.12.2007,  20:42 Найти цитируемый пост)
что делается при I:=Pos(#00#00#00,S);   и чтотакое вот эти штуки #00#00#00

Позиция строки #00#00#00 в строке S т.е. если S := '1234'; I := Pos('3', S); I = 3
#00  ASCII код символа.
Цитата(Kvazilol @  14.12.2007,  20:42 Найти цитируемый пост)
что делает  SetLength(S,I-1)

S массив процедура выделяет под него память размером I-1 зачем в коде это нужно не понятно так как S имеет тип String  smile 
Цитата(Kvazilol @  14.12.2007,  20:42 Найти цитируемый пост)
что делает Seek(F,FilePos(F)-1);

Помойму это позиция в файле.

Автор: lukas 14.12.2007, 22:43
Код

S массив процедура выделяет под него память размером I-1 зачем в коде это нужно не понятно так как S имеет тип String  smile 


string - это массив символов... если допустим тебе нужно расширить строку до 250 символов... чтобы потом не мучаться и не проверять при таком обращении - S[I] (есть ли I - символ)... 

Автор: ivan219 14.12.2007, 23:02
Цитата(lukas @  14.12.2007,  22:43 Найти цитируемый пост)
string - это массив символов...

Я это знаю  smile 

Хотя новерное лучше заранее знать сколько в неё влезет чтоб лишний if неиспользовать так быстрее будет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)