Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 85
от 02.04.2005, 00:00

Администратор:Калашников О.А.
В номере:Вопросов: 4, Ответов: 19


Вопрос № 18820: Привет всезнающие!! Мне курсак дали, ну тему расписывать долго, а загнался я на том что незнаю как узнать трафик локальной сети. Тоесть количество вхожящих/исходящих байтов, пакетов, и т.д. Помогите люди добрые кодом, апишкой, ссилкой, советом, о...
Вопрос № 18827: Здравств. Подскажите как трехзначное рациональным способом число разложить на разяды. Например было число 456, а получить 4, 5 и 6....
Вопрос № 18831: На форме есть GroupBox, а на нем определенное изображение составленое из компонентов Shape. Так вот вопрос. Как ето все произведение иссукуства сохранить в bmp или jpg?...
Вопрос № 18851: Есть число первые три цифры от 1 и 0 до 9, а потом идут нули n-раз. Мне необходимо из числа например 534000000000 получить 534....

Вопрос № 18820
Привет всезнающие!!
Мне курсак дали, ну тему расписывать долго, а загнался я на том что незнаю как узнать трафик локальной сети. Тоесть количество вхожящих/исходящих байтов, пакетов, и т.д. Помогите люди добрые кодом, апишкой, ссилкой, советом, одним словом хто чем может
Отправлен: 27.03.2005, 03:24
Вопрос задал: Ivanitskiy Oleg Romanovych (статус: Посетитель)
Всего ответов отправлено: 2

Отвечает: Malish
Здравствуйте, Ivanitskiy Oleg Romanovych!
http://www.delphikingdom.ru/asp/itemq.asp?mode=0&ItemID=321+43 поройся много чего по сети может найдешь.
Ответ отправил: Malish (статус: 5-ый класс)
Отправлен: 27.03.2005, 12:13

Отвечает: Voituk Alexander
Здравствуйте, Ivanitskiy Oleg Romanovych!
Тебе нужно написать сниффер. Это довольно крутая прога.
Я сам пытался этим заниматься. Вот нашел исходники сниффера. Правда в нем не разбирался.
http://owns.sourceforge.net/
http://www.owns.st
Ответ отправил: Voituk Alexander (статус: 6-ой класс)
Отправлен: 28.03.2005, 14:20


Вопрос № 18827
Здравств. Подскажите как трехзначное рациональным способом число разложить
на разяды. Например было число 456, а получить 4, 5 и 6.
Отправлен: 27.03.2005, 10:37
Вопрос задал: CJ (статус: Студент)
Всего ответов отправлено: 8

Отвечает: Malish
Здравствуйте, CJ!
a:=456;
repeat
b := a mod 10 ;
a:= a div 10;
Edit1.Text :=Edit1.Text+ IntToStr(b);
Edit1.Update;
until (a = 0 )
Вот такой способ! Раскладывает не только трехзначные числа, а вообще любого порядка числа.
Ответ отправил: Malish (статус: 5-ый класс)
Отправлен: 27.03.2005, 11:04

Отвечает: Bochvarov NikB
Здравствуйте, CJ!
1.
s:=IntToStr(Dig);
s[1], s[2], s[3], (if length(s)=3); while length(s)....)
2.
i:=0;
while Dig<>0 do begin
k[i]:=Dig mod 10;
Dig:= Dig div 10;
inc(i);
end;
Ответ отправил: Bochvarov NikB (статус: 2-ой класс)
Отправлен: 27.03.2005, 11:14

Отвечает: Кудрявцев Андрей
Здравствуйте, CJ!
Если число x железобетонно трехзначное, то так
c := x div 100;
b := (x div 10) mod 10;
c := x mod 10
иначе - в цикле типа
repeat
a := x mod 10;
x := x div 10
until x < 0;
будешь получать каждый раз по единице разряда
Ответ отправил: Кудрявцев Андрей (статус: 1-ый класс)
Отправлен: 27.03.2005, 14:59

Отвечает: Полховский Александр Владимирович
Здравствуйте, CJ!
Есть парочка способов:

1.

Перевести число в строку через

inttostr

, затем отдельно перевести каждый символ в цифру фунцией

strtoint

.

2.

Использовать функции

mod

и

div

таким образом :

((N)mod(100))div(10)

(определяем десятки).
Если числа небольшие, то используйте второй способ, если громадные, то лучше первый.
Ответ отправил: Полховский Александр Владимирович (статус: Студент)
Отправлен: 27.03.2005, 18:23

Отвечает: Заболотный Евгений Александрович
Здравствуйте, CJ!
В этом случае можно конечно преобразовать всё это счастье в строку, а потом по-символьно обратно в числа (или отнимать от кода каждого символа код '0'). Но лично мне так делать не интерестно :), поэтому предлагаю вариант, который в символическо-консольном виде выглядит примерно так:
{...}
chislo:=456; // Твоё число
num:=chislo; // Что бы не испортить исходное число
por:=10; // Порядок
{...}
repeat
ost:=num mod por; // Остача (6, 5, 4)
num:=num div por; // Уменьшаем порядок числа: 45, 4, 0
writeln(ost);
until num=0;
{...}
Думаю смысл понятен. Числа из порядков выбираются начиная с самого маленького. Вместо writeln(ost) вставь, куда надо запихивать эти числа. Если, например, ost сделать равным 1000, то будут выбираться числа по три порядка (ну, это не дла трехзначных, но вообще прикольно, мне понравилось :) ).
Ответ отправил: Заболотный Евгений Александрович (статус: 1-ый класс)
Отправлен: 28.03.2005, 02:26

Отвечает: sir henry
Здравствуйте, CJ!
Преобразовать его в строку, тогда у Вас получится массив, где
число[1]:=4;
число[2]:=5;
число[3]:=6;
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 28.03.2005, 05:49

Отвечает: Voituk Alexander
Здравствуйте, CJ!
Делишь целочисленно на 100.
Потом получаешь остаток от деления на 100.
Этот отстаток делишь на 10.
Получаешь остаток от деления на 10.
Вот тебе и будут три цифири.
Ответ отправил: Voituk Alexander (статус: 6-ой класс)
Отправлен: 28.03.2005, 13:56

Отвечает: Vj
Здравствуйте, CJ!
Просто. Для этого мы будем пользоваться функциями перевода числа в строку и наоборот:
var x, y, z, xyz: integer;
str: string;
begin
str:=inttostr(xyz);
x:=strtoint(xyz[1]);
y:=strtoint(xyz[2]);
z:=strtoint(xyz[3]);
end;
Вот и все - теперь у тебя в x, y и z хранятся разряды трехзначного числа.
Ответ отправил: Vj (статус: Студент)
Отправлен: 01.04.2005, 01:25


Вопрос № 18831
На форме есть GroupBox, а на нем определенное изображение составленое из компонентов Shape. Так вот вопрос. Как ето все произведение иссукуства сохранить в bmp или jpg?
Отправлен: 27.03.2005, 12:12
Вопрос задал: CJ (статус: Студент)
Всего ответов отправлено: 2

Отвечает: Кудрявцев Андрей
Здравствуйте, CJ!
Вот примерно таким образом я отрисовывал содержимое груп-бокса на Image. А уж оттуда сохранить в файл - проще простого. Главное, чтобы размеры Image1 и GroupBox1 совпадали, иначе будут либо излишки, либо не хватит места. Но это дело поправимое
Хотя может существуют и более простые способы

Приложение:

Ответ отправил: Кудрявцев Андрей (статус: 1-ый класс)
Отправлен: 27.03.2005, 15:12

Отвечает: Заболотный Евгений Александрович
Здравствуйте, CJ!
Предположим на форме есть твой GroupBox и Image, тогда если написать такой код в
каком-то обработчике:
Image1.Width:=GroupBox1.Width;
Image1.Height:=GroupBox1.Height;
Image1.Canvas.CopyRect(GroupBox1.ClientRect,Form1.Canvas,GroupBox1.BoundsRect);
Image1.Picture.SaveToFile('a.bmp');
то в Image1 отобразится GroupBox1, а в каталоге с пограммой создатся файл a.bmp.
Image1 скатывает изображение с Канвы главной формы.
Можно сделать Image1 невидимым. Я думаю тоже можно сделать если создать обьект типа
TPicture или даже TBitmap, но у меня пока не получается.
Ответ отправил: Заболотный Евгений Александрович (статус: 1-ый класс)
Отправлен: 28.03.2005, 11:01


Вопрос № 18851
Есть число первые три цифры от 1 и 0 до 9, а потом идут нули n-раз.
Мне необходимо из числа например 534000000000 получить 534.
Отправлен: 27.03.2005, 17:48
Вопрос задал: CJ (статус: Студент)
Всего ответов отправлено: 7

Отвечает: Полховский Александр Владимирович
Здравствуйте, CJ!
Не задавай очень похожих вопросов, сам же знаешь, как это напрягает.
Надо "обрезать" его на 10 в n-й степени оператором DIV. Смотри ответ на вопрос 18827 и изучай операторы mod и div.
Ответ отправил: Полховский Александр Владимирович (статус: Студент)
Отправлен: 27.03.2005, 18:34
Оценка за ответ: 2
Комментарий оценки:
Так ведь мне не известно енто число n. Дано число а сколько нулей неизвестно. А если напрегает, не отвечай.

Отвечает: SteelNick
Здравствуйте, CJ!
Или перевести в строку, а потом идти с ее конца до тех пор, пока встретится не ноль. По это самое и отрезать.
Ответ отправил: SteelNick (статус: Специалист)
Отправлен: 27.03.2005, 18:40
Оценка за ответ: 4
Комментарий оценки:
Так а как идти с конца?

Отвечает: Bochvarov NikB
Здравствуйте, CJ!
А тьи посмотрел ответов первого своего вопроса?
Ответ отправил: Bochvarov NikB (статус: 2-ой класс)
Отправлен: 27.03.2005, 18:49
Оценка за ответ: 2
Комментарий оценки:
Если внимательно прочитать, то вопросы разные, и решения проблемы как я понял тоже разные.

Отвечает: Malish
Здравствуйте, CJ!
a:=456000000;
Temp:=a;
b:=1;
repeat
Temp:= Temp div 10;
b:=b*10;
until Temp = 0 ;
b:=Round(b/1000); //1000 потому,что первые 3 знака
a:= a div b;
Edit1.Text := IntToStr(a);
Ответ отправил: Malish (статус: 5-ый класс)
Отправлен: 27.03.2005, 18:59

Отвечает: @lexander
Здравствуйте, Cj
//
a:=534000000000;
s:=inttostr(a);
S2:=сору( s, 1, 3) ;
a:=strtoint(s2);
//
Ну или в делить можно на 10 в цикле n раз:
Ответ отправил: @lexander (статус: 1-ый класс)
Отправлен: 27.03.2005, 19:27

Отвечает: sir henry
Здравствуйте, CJ!
Подсчитайте кол-во нулей после цифры отличной от нуля и разделите это число на степень этого количества нулей (зависимость прямая и однозначная). :)
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 28.03.2005, 05:55

Отвечает: Vj
Здравствуйте, CJ!
Примерно так:
var xyz: integer;
str: string;
begin
xyz:=...
...
str:=inttostr(xyz);
xyz:=Copy(str,1,3);
end;
Вот и все.
Ответ отправил: Vj (статус: Студент)
Отправлен: 01.04.2005, 01:37


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Отписаться

В избранное