|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
не могу сообразить
Здравствуйте. Помогите реализовать пожалуйста.
Нужно в переменную процедуры string записывать новые данные каждый раз после ее завершения. В ней должен быть набор из 8 символов цифр 0-9 букв a-z aaaaaaaa aaaaaaab aaaaaaac ............. Как такое можно реализовать? |
#2
|
||||
|
||||
Переменная - понятно.
Переменная процедуры - более-менее, видимо локальная. Переменная процедуры string - беспорядочный набор слов. Опиши, что вообще нужно, нормальным языком. jmp $ ; Happy End! The Cake Is A Lie. |
#3
|
|||
|
|||
нужно использовать процедур несколько раз, начинать когда переменная имеет значение aaaaaaaa последний когда переменная принимает значение 9999999.
|
#4
|
||||
|
||||
Ну так сделать передаваемую строку параметром процедуры, вызов сделать в цикле и на каждой итерации изменять строку.
jmp $ ; Happy End! The Cake Is A Lie. |
#5
|
||||
|
||||
Цитата:
Код:
const Digits: AnsiString = 'abcdefghijklmnopqrstuvwxyz0123456789'; // В этой строке находятся используемые // "цифры" в порядке возрастания procedure Increment(var Number: AnsiString); var i, p: Integer; begin i := Length(Number); while i > 0 do begin p := Pos(Number[i], Digits); if p = 0 then raise Exception.Create('Встретилась неизвестная цифра'); Inc(p); if p > Length(Digits) then begin Number[i] := Digits[1]; Dec(i); end else begin Number[i] := Digits[p]; Exit; end; end; end; // Пример использования: procedure TForm1.Button1Click(Sender: TObject); const NumberLen = 8; // Количество "цифр" в "числе" var s, First: AnsiString; begin First := StringOfChar(Digits[1], NumberLen); // Первое "число" вроде такого "aaaaaaaa" s := First; repeat Caption:=s; Increment(s); until s = First; // Пока не вернёмся к первому "числу" end; Правда так как эта процедура предназначена для общего случая, то она не сильно шустрая. Если же важна скорость, то для твоего случая (36-ричного) можно соптимизировать её примерно так: Код:
procedure Increment(var Number: AnsiString); var i: Integer; begin i := Length(Number); while i > 0 do begin case Number[i] of 'a'..'y', '0'..'8': Number[i] := Succ(Number[i]); 'z': Number[i] := '0'; '9': begin Number[i] := 'a'; Dec(i); Continue; end; else raise Exception.Create('Встретилась неизвестная цифра'); end; Break; end; end; |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
ИдиПейЧай (03.06.2013)
|
#6
|
||||
|
||||
poli-smen, напоминает типичный брутфорс
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#7
|
|||
|
|||
Цитата:
спасибо большое |
#8
|
||||
|
||||
Цитата:
|