Новая версия. Компонент TGameResults - компонент для сохранения/загрузки в файл и отображения результатов игр. Сейчас доступно шифрование сохраняемых данных и использование рисунков в качестве фона.
»»» Скачать: исходные тексты (8кб) демонстрационный EXE файл (184кб)
Этот компонент мне захотелось сделать для того чтобы каждый раз не мучится. Это есть кнопка, Предком является TBevel. У кнопки есть 3 картинки; 1 - отображается всегда, 2 - при наведении указателя мыши, 3 - при нажатии на кнопку, все 3 картики загружаются в exe-шник, как у Image. Картинки на кнопке растягиваются по размеру(даже Icon). Также есть св-во Transperent.
»»» Скачать: исходные тексты (9кб)
function SearchString(const FindStr, SourceString: String;Num: Integer):Integer; var FirstP: PChar; function MyPos(const FindStr, SourceString: PChar;Num: Integer): PChar; begin Result := AnsiStrPos(SourceString,FindStr); if (Result=nil) then Exit; Inc(Result); if Num=1 then Exit; if num>1 then Result := MyPos(FindStr,Result,num-1); end; begin Result := 0; FirstP := PChar(SourceString); Result := MyPos(PChar(FindStr),PChar(SourceString),Num) - FirstP; if Result<0 then Result := 0; end;
function NextSubStr(Const SubStr,Str : String; PrevIdx : Integer):Integer; begin if (PrevIdx<=Length(Str)) and (PrevIdx>0) then Result := pos(SubStr,PChar(@Str[PrevIdx]))+PrevIdx-1 else Result := 0; end; Var k : Integer; begin k :=NextSubStr('a','abcabcabc',1); Label1.Caption:=IntToStr(k); // Выводим позицию первого вхождения строки 'a' k :=NextSubStr('a','abcabcabc',k+1); Label2.Caption:=IntToStr(k); // Выводим позицию следующего вхождения строки 'a' end;
function fStrPos(const Line, Sample: string; FromPos, ToPos: integer): integer; var stLen, samLen: integer; StopIndex: integer; StopChar, ch: char; SuffixStr, RevertSample: string; SuffixLen: integer; i, incr: integer; begin Result := 0; //checks SamLen := length(Sample); if SamLen = 0 then exit; if FromPos <= 0 then FromPos := 1; stLen := length(Line); if (ToPos < stLen) and (toPos >= FromPos) then stLen := toPos; //Переворачиваем Sample
- удобно для Pos SetLength(RevertSample, SamLen); for i := 1 to S!
amLen do RevertSample[SamLen - i + 1] := Sample[i]; //Пока не дошли до конца участка минус длина образца... while FromPos <= (stLen - samLen + 1) do begin //сравниваем образец СПРАВА НАЛЕВО StopIndex := 0; for i := samLen downTo 1 do if Sample[i] <> Line[i + FromPos - 1] then begin //На чем запнулись StopIndex := i; StopChar := Line[i + FromPos - 1]; SuffixStr := copy(Sample, i+1, samLen - i); SuffixLen := length(SuffixStr); Break; end; //Проверка совпадения if StopIndex = 0 then begin Result := FromPos; E!
xit; end; //Переворачиваем суффикс for i := 1 to (SuffixLen div 2) do begin ch := suffixstr[SuffixLen - i + 1]; suffixstr[SuffixLen - i + 1] := suffixStr[i]; suffixstr[i] := ch; end; //Приращение по суффиксу - следующее вхождение incr := Pos(SuffixStr, copy(RevertSample,SuffixLen + 1,SamLen)); //Приращение по стоп-символу: for i := StopIndex - 1 downTo 1 do if Sample[i] = StopChar then begin if incr < (SamLen - i) then incr := SamLen - i;
break; end; if incr = 0 then incr := samLen; inc(FromPos, incr); end; end;
Иерархические структуры данных в реляционных БД
Наряду с «плоскими» данными, при построении даже простых информационных систем, приходится хранить в БД и информацию о «вложенных» друг в друга сущностях, т.е иерархические данные. Организация хранения такой информации в реляционных БД проста, но не всегда очевидна для тех, кто впервые сталкивается с подобной задачей. В данной статье я попытаюсь поделиться накопленным опытом.
Object Pascal в Delphi
В книге даются исчерпывающие справочные сведения по языку Object Pascal в Delphi 6 и предшествующих версиях: синтаксис языка, все операции и операторы, все типы данных, работа с исключениями, с сообщениями Windows, с текстовыми и двоичными файлами, со строками разных типов, массивами (в том числе открытыми и динамическими), множествами, записями, классами. Рассматривается возможность создание собственных типов variant с перегрузкой операций. Приводится около 400 функций языка Object Pascal, Delphi, API Windows, из них более 170 описаны подробно с примерами применения. Книга является несколько сокращенным изложением глав книги `Delphi 6. Справочное пособие`, посвященных языку Object Pascal. Как справочник книга полезна пользователям любой квалификации, но, прежде всего - начинающим разработчикам.
Автор: А. Я. Архангельский
Хокку дня
Намазал на хлеб Запах листвы молодой, И уплетаю...
Афоризмы
Ревность – поиски любви там, где она не и ночевала.
Фраза дня
Если третье лезвие бреет ещё чище - то зачем нужны первые два?
Дурацкие законы (информация предоставлена сайтом kurilka.com)
В Джоржии (США) разрешается бить любого, кто оскорбляет вас бранными выражениями.
В городе Гейнсвилл (США) издано специальное распоряжение, предписывающее “есть курицу руками”.
И на закуску коротенький анекдот
Приходит мужичок в компьютерную лавку и спрашивает: - У вас есть спирали для чайников? Продавец: - Спирали? Для... чайников???