Code: procedure RegWrite; var reg: TRegistry; Bin: array[0..10] of Byte; I: Integer; begin for i:= 0 to High(Bin) do Bin[i]:= i; reg:= TRegistry.Create(KEY_ALL_ACCESS); with Reg do try RootKey:= HKEY_CURRENT_USER; OpenKey('Software\my_sub_key', True); WriteInteger('Integer', I); WriteDate('Date', Now); WriteBinaryData('BinData', Bin, SizeOf(Bin)); WriteString('String', 'String'); WriteBool('Bool',True); Reg.WriteFloat('Float',2.366); CloseKey; finally Free; end; end;
ЕррорНео я бы тебе посоветовал использовать инди где это решается в пару строк кода, но я уже в другой теме прочитал что ты не любишь её (велосипедо-строительство рулед) Хотя, мб есть возможность прикрутить всего один класс TIdCompressorZLib, но его метод имеет вид: procedure DecompressHTTPDeflate( AInStream: TIdStream, AOutStream: TIdStream ); Т.е. в любом случае надо конвертировать в TIdStream
правда? Оо. я не люблю инди потому что он глючен + не позволяет развивать больших скоростей. (а многие мои прграммы за счет Вин-Апи обрабатывают по 10+- тысяч запросов\мин) Но за совет тем не менее благодарю. Может быть в этой конерктной программе, где у меня все упирается в траффик - и правда эффективнее будет заюзать инди. Хотя, конечно, было бы прикольнее просто каким-то образом декодировать gzip=\ спс. upd. да, этот метод с TIdStream я видел - думал может есть что-то проще и не такое непонятное (на первый взгляд) может заюзаю и это - там видно будет)
Ты как специализирующийся на винсок, можешь сказать сколько % выигрыша в скорости дают сокеты перед инди?
в инди все просто сделанно, и там ты можешь "Декомпресировать" текст, который тебе прислал сервер. В принципе это экономия трафика))
это от задачи зависит, допустим тебе несколько сот(тысяч) потоков надо создать и чтото в них передать по сети, если ты сделаешь это в инди то прога боюсь не только медленнее это делать будет но и вообще комп повесит.
зависит от приложения. Если потоков мало - врятли выиграш будет заметен, а в многопоточных приложениях (1000+ потоков) выигрыш - десятки процентов.
2 ErrorNeo 1000+ потоков 0 выигрыш будет = бесконечности потому что деление на 0 даст ошибку )) т.к. в 1000 потоков инди загнется все со всей прогой и половиной винды )
Дана матрица NxN. Помогите вывести номер строки с минимальным число элементов что равны заданному (заданое число вводит пользователь) Итак, у меня выводит n строк и количество элементов и напротив каждой строки, как вывести лишь минимальную строку? Вот что наработал: program matryca; uses crt; const nmax=1000; label 25; var Matr:array[1..nmax,1..nmax] of integer; Vec:array[1..nmax] of integer; n,m,i,j,k,l,min : integer; begin 25: write ('Введите количество строк в матрице:'); readln (m); write ('Введите количество столбцов в матрице:'); readln (n); if m<>n then begin writeln('Матрица должна быть квадратная! ! !');goto 25; end; // Ввод матрицы writeln(' '); writeln(' -------------------- '); writeln(' Ввод матрицы '); writeln(' -------------------- '); writeln(' '); for i:=1 to n do for j:=1 to m do begin write ('Введите элемент матрицы A(',i,';',j,'):'); readln (Matr[i,j]); end; // Вывод матрицы for i:=1 to n do begin write('(',i,'-я строка) '); for j:=1 to m do write(Matr[i,j],' '); writeln; end; // Введення числа write('Введите число: '); read(k); for i:=1 to n do begin vec:=0; for j:=1 to m do begin if k=matr[i,j] then vec:=vec+1 end; end; for i:=1 to n do begin write('Количество введенных пользователем символов в ', i,'-й строчке: ', vec ); writeln; end; end. Code: program matryca; uses crt; const nmax=1000; label 25; var Matr:array[1..nmax,1..nmax] of integer; Vec:array[1..nmax] of integer; n,m,i,j,k,l,min : integer; begin 25: write ('Введите количество строк в матрице:'); readln (m); write ('Введите количество столбцов в матрице:'); readln (n); if m<>n then begin writeln('Матрица должна быть квадратная! ! !');goto 25; end; // Ввод матрицы writeln(' '); writeln(' -------------------- '); writeln(' Ввод матрицы '); writeln(' -------------------- '); writeln(' '); for i:=1 to n do for j:=1 to m do begin write ('Введите элемент матрицы A(',i,';',j,'):'); readln (Matr[i,j]); end; // Вывод матрицы for i:=1 to n do begin write('(',i,'-я строка) '); for j:=1 to m do write(Matr[i,j],' '); writeln; end; // Введення числа write('Введите число: '); read(k); for i:=1 to n do begin vec[i]:=0; for j:=1 to m do begin if k=matr[i,j] then vec[i]:=vec[i]+1 end; end; for i:=1 to n do begin write('Количество введенных пользователем символов в ', i,'-й строчке: ', vec [i]); writeln; end; end. P.S:Делал на PascalABC
Ну а что тут сложного? Сравни кол-во повторенией в строках и выведи строку с минимальным количеством. P.S и вообще ABC - зло
Помогите с лабораторной на списки Разработать справочник пассажирских поездов с полями: номер поезда, станции отправления и назначения, время в дороге, категория поезду. Реализовать подпрограммы поиска: 1) по станциям отправления и назначения, 2) по категории поезду. как это все делать не знаю потому как преподаватель заболел а другой требует мол я ниче не знаю мне надо чтоб было сдано program Records; uses crt, strings; const max = 100; {максимальное допустимое количество записей в массиве} type {Тип данных для описания книги} TBook = record name : string[40]; {название} author : string[20]; {автор} style : string[20]; {жанр} tom : byte; {количество томов} year : word; {год выпуска} end; {Тип данных "Каталог книг" - массив из 100 книг} TBooks = array [1..max] of TBook; {Процедура рисование окна без рамки. Вх.данные: (x1,y1) - координаты верхнего левого угла окна, (x2,y2) - координаты нижнего правого угла окна, tc - цвет текста, c - цвет фона окна} procedure SngWindow(x1,y1,x2,y2,tc,c : byte); begin window(x1,y1,x2,y2); textbackground(c); textcolor(tc); clrscr; end; {Процедура рисование окна с рамкой шириной в 1 символ. Вх.данные: (x1,y1) - координаты верхнего левого угла окна, (x2,y2) - координаты нижнего правого угла окна, tc - цвет текста, c1 - цвет рамки, c2 - цвет фона окна} procedure DblWindow(x1,y1,x2,y2,tcolor, c1, c2 : byte); begin window(x1,y1,x2,y2); textbackground(c1); clrscr; window(x1+1,y1+1,x2-1,y2-1); textbackground(c2); textcolor(tcolor); clrscr; end; {Функция для отображения главного меню и выбора одного из его пунктов. Функция возвращает значение от 1 до 5.} function Menu : byte; var punkt : byte; {номер выбранного пункта меню} er : integer; {код ошибки при преобразовании строки в число} s : string; {строка для проверки вводимого номера пункта меню} begin {Закрасить весь экран черным цветом} SngWindow(1,1,80,25,WHITE,BLACK); {Нарисовать рабочее окно} SngWindow(1,6,80,25,WHITE,BLUE); {цикл выполняется до тех пор, пока пользователь не введет число от 1 до 5} repeat {Нарисовать окно для главного меню} DblWindow(1,1,80,5,YELLOW,MAGENTA,BLUE); writeln; write(' 1.Добавить 2.Удалить 3.Печать 4.Поиск 5.Выход'); readln(s); {ввод номера пункта меню} val(s,punkt,er); until (er=0) and (punkt>=1) and (punkt<=5); Menu := punkt; {возврат значения функции} end; {Функция для отображения подменю для поиска и выбора одного из его пунктов. Функция возвращает значение от 1 до 4.} function SubMenu : byte; var punkt : byte; {номер выбранного пункта меню} er : integer; {код ошибки при преобразовании строки в число} s : string; {строка для проверки вводимого номера пункта меню} begin {Закрасить весь экран черным цветом} SngWindow(1,1,80,25,WHITE,BLACK); {Нарисовать рабочее окно} SngWindow(1,6,80,25,WHITE,BLUE); {цикл выполняется до тех пор, пока пользователь не введет число от 1 до 4} repeat {Нарисовать окно для главного меню} DblWindow(1,1,80,5,YELLOW,MAGENTA,BLUE); writeln; write(' 1.Поиск по названию 2.Поиск по автору 3.Поиск по году 4.Выход'); readln(s); {ввод номера пункта меню} val(s,punkt,er); until (er=0) and (punkt>=1) and (punkt<=4); SubMenu := punkt; {возврат значения функции} end; {Процедура добавления книги в каталог книги. Книга добавляется в конец каталога. Вх.данные: mas - каталог книг; n - количество книг в каталоге; size - максимальное возможное количество книг в каталоге; Вых.данные: если каталог полностью еще не заполнен, то в него будет добавлена книга и n увеличится на 1, в противном случае - книга не добавляется. mas - каталог книг;} procedure AddRecord(var mas : TBooks; var n : byte; size : byte); var s : String; {строка для ввода числовых значений} er : integer; {код ошибки при преобразовании строки в число} begin {проверка: есть ли еще место для новой книги в каталоге} if (n+1 <= size) then begin inc(n); {увеличение количества книг в каталоге} {ввод названия, автора и жанра книги} write('Название книги =>'); readln(mas[n].name); write('Автор =>'); readln(mas[n].author); write('Жанр =>'); readln(mas[n].style); {ввод количества томов (>0)} repeat write('Количество томов =>'); readln(s); val(s,mas[n].tom,er); until (er=0) and (mas[n].tom>0); {ввод года издания (в диапазоне [1900;2008])} repeat write('Год издания =>'); readln(s); val(s,mas[n].year,er); until (mas[n].year >= 1900) and (mas[n].year<=2008); writeln('Книга добавлена в каталог!'); end else writeln('Недостаточно места в каталоге!'); end; {Процедура печати информации о книге под номером i в каталоге} procedure PrintRecord(var mas : TBooks; i : integer); begin write(i:3); with mas do begin write(name:23); write(author:20); write(style:10); write(tom:10); write(year:12); writeln; end; end; {Процедура печати содержимого всего каталога. Вх.данные: mas - каталог книг, n - количество книг в каталоге} procedure Print(var mas : TBooks; n : integer); var i : integer; {номер книги в каталоге} begin writeln('#':3,'Название':23,'Автор':20,'Жанр':10,'Тома':10,'Год издания':12); for i:=1 to n do PrintRecord(mas,i); end; {Процедура удаления книг из каталога под названием bname. Вх.данные: mas - каталог книг, n - количество книг в каталоге, bname - название книг, которые необходимо удалить из каталога Вых.данные: если в каталоге имеются книги под название bname информация о них будет распечатана и они будут удалены из каталога и количество книг в каталоге n уменьшиться на количество удаленных книг; если в каталоне нет книг под заданным названием на экран не будет выводиться информация о книгах.} procedure DelRecordByName(var mas : TBooks; var n : byte; bname : string); var i,j : integer; {номера книг в каталоге} begin writeln('#':3,'Название':23,'Автор':20,'Жанр':10,'Тома':10,'Год издания':12); {цикл для просмотра всех книг каталога} for i:=1 to n do begin with mas do {книга под номером i имеет название bname, следовательно ее необходимо удалить из каталога} if (name = bname) then begin PrintRecord(mas,i); {печать информации об удаляемой книге} {цикл для смещения книг на одну позицию влево для удаления книги из каталога} for j:=i+1 to n do mas[j-1] := mas[j]; {количество книг в каталоге уменьшилось на 1} dec(n); end; end; end; {Процедура поиска книг по названию. Вх.данные: mas - каталог книг; n - количество книг в каталоге; bname - название книги, по которому необходимо осуществлять поиск книг; Вых.данные: на экране монитора в табличном виде распечатается информация о книгах с названием bname.} procedure FindByName(var mas : TBooks; n : integer; bname : string); var i : integer; {номер книги} begin writeln('#':3,'Название':23,'Автор':20,'Жанр':10,'Тома':10,'Год издания':12); {просмотр всех книг в каталоге} for i:=1 to n do with mas do {название книги совпадает с заданным названием bname} if name=bname then PrintRecord(mas,i); end; {Процедура поиска книг по автору и жанру. Вх.данные: mas - каталог книг; n - количество книг в каталоге; ba - автор книги; bst - жанр книги; Вых.данные: на экране монитора в табличном виде распечатается информация о книгах, которые написал автор ba в жанре bst.} procedure FindByAuthor(var mas : TBooks; n : integer; ba, bst : string); var i : integer; {номер книги} begin writeln('#':3,'Название':23,'Автор':20,'Жанр':10,'Тома':10,'Год издания':12); {просмотр всех книг в каталоге} for i:=1 to n do with mas do {автор книги и жанр совпадают с заданными автором ba и жанром bst} if (author=ba) and (style=bst) then PrintRecord(mas,i); end; {Процедура поиска книг по году издания. Вх.данные: mas - каталог книг; n - количество книг в каталоге; [a,b] - период издания книг; Вых.данные: на экране монитора в табличном виде распечатается информация о книгах, которые были изданы в период годов от а до b.} procedure FindByYear(var mas : TBooks; n : integer; a, b : word); var i : integer; {номер книги} begin writeln('#':3,'Название':23,'Автор':20,'Жанр':10,'Тома':10,'Год издания':12); {просмотр всех книг в каталоге} for i:=1 to n do with mas do {год издания книги находиться в диапазоне от а до b} if (a<=year) and (year<=b) then PrintRecord(mas,i); end; var b : TBooks; {каталог книг} n : byte; {количество книг в каталоге} punkt : byte; {номер пункта меню} subpunkt : byte; {номер подпункта в пункте меню Поиск} bookname, {название книги} a, {автор книги} st : string; {жанр книги} y1,y2 : word; {диапазон годов издания книг} s : string; {строка для ввода числовых значений} er : integer; {код ошибки при переводе строки в число} begin n := 0; {в каталоге нет книг} SngWindow(1,1,80,25,WHITE,BLACK); repeat punkt:= Menu; {выбор пункта меню} case (punkt) of 1:begin {пункт Добавление книги} SngWindow(1,6,80,25,WHITE,BLUE); writeln(' ДОБАВЛЕНИЕ КНИГИ В КАТАЛОГ'); AddRecord(b,n,max); {добавление книги в каталог b} readkey; end; 2:begin {пункт Удаление книги} SngWindow(1,6,80,25,WHITE,BLUE); writeln(' УДАЛЕНИЕ КНИГ ПО НАЗВАНИЮ'); {Задание значения ключа - название книги} write('Название книги =>'); readln(bookname); {удаление из каталога книг по названию книги} DelRecordByName(b,n,bookname); readkey; end; 3:begin {печать каталога книг} SngWindow(1,6,80,25,WHITE,BLUE); writeln(' КАТАЛОГ КНИГ'); Print(b,n); {печать в табличном виде информации о книгах в каталоге} readkey; end; 4:begin {пункт Поиск книг} repeat subpunkt := SubMenu; {выбор пункта меню по поиску книг} case (subpunkt) of 1:begin {пункт Поиск по названию книги} SngWindow(1,6,80,25,WHITE,BLUE); writeln(' КНИГИ ПО НАЗВАНИЮ '); {задание ключа поиска по названию книги} write('Название книги =>'); readln(bookname); {поиск книг в каталоге b по названию bookname} FindByName(b,n,bookname); readkey; end; 2:begin {пункт Поиск по автору и жанру} SngWindow(1,6,80,25,WHITE,BLUE); writeln(' КНИГИ ПО АВТОРУ И ЖАНРУ'); {задание ключа поиска по автору} write('Автор книги =>'); readln(a); {задание ключа поиска по жанру} write('Жанр книги =>'); readln(st); {поиск книг в каталоге b по автору и жанру} FindByAuthor(b,n,a,st); readkey; end; 3:begin {поиск по году издания} SngWindow(1,6,80,25,WHITE,BLUE); writeln(' КНИГИ ПО ГОДУ ИЗДАНИЯ '); {цикл задания ключа поиска по году издания} repeat {задание ключа поиска - минимальный год} repeat write('Минимальный год =>'); readln(s); val(s,y1,er); until (er=0) and (y1>=1900); {год издания должен быть >= 1900} {задание ключа поиска - максимальный год} repeat write('Максимальный год =>'); readln(s); val(s,y2,er); until (er=0) and (y2<=2008); {год издания должен быть <= 2008} until (y1<y2); {поиск книги по году издания [y1,y2] в каталоге b} FindByYear(b,n,y1,y2); readkey; end; end; until (subpunkt = 4); {выход из подменю поиска при выборе пункта 4} end; end; until (punkt = 5); {выход из программы при выборе пункта меню 5} SngWindow(1,1,80,25,WHITE,BLACK); end. это написано на паскале что и как сдесь я не знаю нам ток сказали что б было на подобии
так тебе через записи или через списки надо? это разные вещи(ты через записи сделал). закинь свой исходник в теги, и я не понял всетаки что тебе надо? код не работает?
мне надо этот код переделать под мое условие Разработать справочник пассажирских поездов с полями: номер поезда, станции отправления и назначения, время в дороге, категория поезду. Реализовать подпрограммы поиска: 1) по станциям отправления и назначения, 2) по категории поезду
Парни как можно вывести изображение на рабочий стол поверх всех окон с помощью например Delphi (WinAPI)???Очень надо. заранее спасибо
Code: var s: string; begin s:=idhttp1.get('http://site/file.dat'); //Допустим будет в s слово: message_hello_:) //Единственное что тут могут регистры мешать (но это дело поправимое :) ) if pos('message', s)<>0 then begin showmessage(copy(s, pos('message_', s)+length('message_'), length(s)-length('message ')-3)); end; end; на winsock'e, как это будет выглядеть?