Вопрос № 113702: Решил покопаться в windows.pas и нашел такой фрагмент:
tagWNDCLASSW = packed record
style: UINT;
lpfnWndProc: TFNWndProc;
cbClsExtra: Integer;
cbWndExtra: Integer;
hInstance: HINST;
hIcon: HICON;
hCursor: HCURS...Вопрос № 113775: Здравствуйте! Уважаемые, помогите, пожалуйста, как правильно построить набор тестов для этой абстракции? Как вообще их строить?
Function SearchPodstr(str:string; obr:string): integer;
Var
i:integer;
n:integer;
Flag:BOOLEAN;<...
Вопрос № 113.702
Решил покопаться в windows.pas и нашел такой фрагмент:
tagWNDCLASSW = packed record
style: UINT;
lpfnWndProc: TFNWndProc;
cbClsExtra: Integer;
cbWndExtra: Integer;
hInstance: HINST;
hIcon: HICON;
hCursor: HCURSOR;
hbrBackground: HBRUSH;
lpszMenuName: PWideChar;
lpszClassName: PWideChar;
end;
Покопавшись еще, с удивлением обнаружил, что все поля записи 4-байтовые. Вопрос: кто-нибудь знает зачем писать packed, когда запись и без этого упакована?
Отправлен: 12.12.2007, 23:10
Вопрос задал: Ddogg (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 6)
Отвечает: Лукьяненко Алексей Валериевич
Здравствуйте, Ddogg!
packed будет иметь значение, если установвить выравнивание на 8 байт. Кроме того, оригинальна, сишная версии этого файла - кроссплатформенная, и при этом для разных платформ размер типа Integer может отличаться - 2 байта в 16-битной среде (windows 3.1), 4 - в 32-битной.
Ответ отправил: Лукьяненко Алексей Валериевич (статус: 10-ый класс)
Ответ отправлен: 13.12.2007, 09:42 Оценка за ответ: 4 Комментарий оценки: ответ неточный
Вопрос № 113.775
Здравствуйте! Уважаемые, помогите, пожалуйста, как правильно построить набор тестов для этой абстракции? Как вообще их строить?
Function SearchPodstr(str:string; obr:string): integer;
Var
i:integer;
n:integer;
Flag:BOOLEAN;
Begin
Flag:=false;
For i:=1 to Length(str)-Length(obr)+1 do
Begin
If str[i]=obr[1] then
For n:=1 to Length(obr)-1 do
Begin
Flag:=true;
if obr[n+1]<> str[i+n] then
Begin
Flag:=false;
break;
end;
end;
if Flag then begin Result:=i; exit; end;
end;
Result:=0;
end;
//пример использования функции
procedure TForm1.Button1Click(Sender: TObject);
Var
str:string;
obr:string;
begin
Edit1.Text:=Str;
Edit2.Text:=Obr;
label1.Caption:=inttostr(SearchPodstr('fghjgjgi','gh'));
end;
end.
// в данном примере ф-ия возвратит число 2
Отправлен: 13.12.2007, 11:55
Вопрос задала: Izolda (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: SHERRY
Здравствуйте, Izolda!
Если я вас правильно понял, Вы функцией
procedure TForm1.Button1Click(Sender: TObject);
Var
str:string;
obr:string;
begin
Edit1.Text:=Str;
Edit2.Text:=Obr;
label1.Caption:=inttostr(SearchPodstr('fghjgjgi','gh'));
end;
end.
// в данном примере ф-ия возвратит число 2
ищете подстроку? В Паскале есть стандартная функция, которая возвращает индекс вхожения строки (стр1) в подстроку (стр):
pos( стр1, стр );
--------- Наши программисты самые программистые программисты!..
Ответ отправил: SHERRY (статус: 5-ый класс)
Ответ отправлен: 13.12.2007, 12:12