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

Программирование (VB,C#,ASP,.NET): новости, советы, примеры



Выпуск # 177


http://www.kbyte.ru/

 

Новый выпуск!

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

 

Содержание выпуска

Система ЭКСПЕРТ

    Вопрос #000426: Как сохранить содержимое ComboBox

    Вопрос #000424: пропадают типы проектов в vb6

    Вопрос #000419: Как динамически добавить на форму ComboBox-ы

    Вопрос #000408: Работа с текстовой базой данных.

    Вопрос #000406: VB-6_и__текстовоый_файл

Последнее на форумах

    Кодировка

    реклама

    AJAX

    Callback

    Membership

Последние статьи

    Взаимодействие с другими сайтами через HTTP (HttpWebRequest и HttpWebResponse)

    Работа с SQL – Запросы

    Использование XML.Serialization

    Выбор языка программирования для научных работ (2-я редакция)

    Работаем с MIME

Интересные коды и решения

Юмор на Kbyte.Ru

 

Система ЭКСПЕРТ

 

Система «Эксперт» - уникальная система, которая поможет решить, если не все, то многие Ваши проблемы с программированием и разработкой! Если у Вас есть какой-либо вопрос по программированию или разработке, то Вы всегда можете задать его нашим Экспертам! При этом каких-либо особых действий от Вас не потребуется! Просто отправьте Ваш вопрос на адрес mailto:expert@kbyte.ru, в теме письма укажите тему вопроса, в тексте – сам вопрос, и все! Эксперты дадут Вам ответ в течение 12-24 часов, на тот адрес, с которого Вы отправите вопрос. Все проще простого! Никакой регистрации и заполнение бесконечных форм, никаких наездов, оскорблений и насмешек со стороны гуру, просто спросите и получите ответ ;-)


Вопрос #000426: Как сохранить содержимое ComboBox

Автор вопроса: "Abu Ali" // 24.08.2007 / 10:16

Здравствуйте Эксперты, У меня такой вопрос: Существет форма содержащая ComboBoxы. Эта форма вызывается из главной формы. Выбираются значения ComboBox. Как сделать так, чтобы при следующем вызове формы с ComboBox, ComboBoxы содержали значения выбранные при предыдущем вызове? И чтобы экземпляр формы создавался только один раз?

Отвечает: Алексей Немиро // 24.08.2007 / 13:01

Здравствуйте!

Вот небольшой пример
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033:
034:
035:
036:
037:
038:
039:
040:
041:
042:
043:
044:
045:
046:
047:
048:
049:
050:
051:
052:
053:
054:
055:
056:
057:
058:
059:
060:
061:
062:
063:
064:
/// <summary>
/// Небольшой пример :)
/// Автор: Немиро Алексей
/// Специально для проекта Kbyte.Ru (http://kbyte.ru)
/// Copyright (c) Nemiro AS, 24.08.2007
/// mailto:Алексей@Немиро.Ру
/// </summary>
private void Form1_Load(object sender, EventArgs e)
{
 this.Width = 500; this.Height = 300;
 Button b = new Button();
 b.Click += new EventHandler(b_Click);
 b.Text = "Нажми, но только аккуратно ;)";
 b.Width = 250;
 b.Left = (this.Width - b.Width) / 2;
 b.Top = (this.Height - b.Height) / 2;
 this.Controls.Add(b); 
}

private void b_Click(object sender, EventArgs e)
{
 ComboBox c = new ComboBox();
 for (int i = 0; i <= 9; i++)
 {
  c.Items.Add("Запись " + i.ToString());
 }

 Form f = new Form();
 if (Application.OpenForms.Count <= 1)
 {
  f.Name = "MyNewForm";
  f.Width = 300; f.Height = 300;
  c.Width = 200; c.DropDownStyle = ComboBoxStyle.DropDownList;
  c.Left = (f.Width - c.Width) / 2;
  c.Top = (f.Height - c.Height) / 2;
  c.SelectedIndexChanged += new EventHandler(c_SelectedIndexChanged);
  f.Controls.Add(c);
  f.FormClosing += new FormClosingEventHandler(f_FormClosing);
 }
 else
 {
  for (int i = 0; i <= Application.OpenForms.Count - 1; i++)
  {
   if (Application.OpenForms[i].Name == "MyNewForm")
   {
    f = Application.OpenForms[i];
    break;
   }
  }
  
 }
 if (f != null) { f.Show(); }
}

private void c_SelectedIndexChanged(object sender, EventArgs e)
{
 MessageBox.Show("Выбрана: \"" + ((ComboBox)sender).Text + "\"");
}

private void f_FormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e)
{
 e.Cancel = true;
 ((Form)sender).Hide();
}


--
С наилучшими пожеланиями,
Немиро Алексей

 

Вопрос #000424: пропадают типы проектов в vb6

Автор вопроса: Сницарёв Ю.В. // 22.08.2007 / 09:07

Здравствуйте!
Пользуюсь vb6 sp4 (версия проф-л или энт-з), операционка WinXP Pro Sp1
Rus. При старте студии (если указано в настройках) в диалоговом окне
предлагается выбрать тип проекта (стандартный, активХ...). Уже пару раз
сталкиваюсь с тем, что из набора проектов по непонятной причине исчезает
большинство типов проектов, остаются только самые простые. В студии ничего
не переустанавливалось и не менялось.
Вопрос: как вернуть пропавшие профи-типы проектов?
С уважением Юрий
--
Сницарёв Ю.В.

Отвечает: Алексей Немиро // 22.08.2007 / 09:23

Здравствуйте, Сницарёв Ю.В!

Шаблоны для проектов лежат в папке
C:\Program Files\Microsoft Visual Studio\VB98\Template

Если эту папку удалить, или по каким-то причинам VB не будет иметь к
ней доступ, то список проектов будет сокращен до:
Standart EXE
ActiveX EXE
ActiveX DLL
AtiveX Control

Если с папкой у Вас все нормально, то возможно, что-то или кто-то
блокирует к ней доступ, возможно какой-нибудь антивирус, или вирус :)

--
С наилучшими пожеланиями,
Немиро Алексей

 

Вопрос #000419: Как динамически добавить на форму ComboBox-ы

Автор вопроса: "Abu Ali" // 18.08.2007 / 11:28

Здравствуйте, Эксперты!. Как в C# программно добавит в форму несколько ComboBox в зависимости от условия. Т.е. допустим если переменная х=4 то 4 ComboBoxа, если х=5 то 4 ComboBoxа С уважением, Абу Али

Отвечает: Алексей Немиро // 18.08.2007 / 11:34

Также, как и любой другой элемент:

001:
002:
003:
004:
005:
006:
007:
008:
int x = 4;
for (int i = 0; i <= x; i++)
{
 ComboBox myCombo = new ComboBox();
 myCombo.Name = "myCombo" + i.ToString();
 myCombo.Top = i * myCombo.Height + 2;
 this.Controls.Add(myCombo);
}

 

Вопрос #000408: Работа с текстовой базой данных.

Автор вопроса: Григорьев // 09.08.2007 / 10:58

Здравствуйте, Эксперты!

VB-6 не воспринимает строку
Dim [To] As String - выдаёт сообщение:

Ошибка компиляции:
Ошибка синтаксиса.

Видимо, скобки не помогли :)
Может, посоветуете, как это обойти?

С уважением,
Григорьев Николай.

Отвечает: Алексей Немиро // 09.08.2007 / 11:14

Может, посоветуете, как это обойти?

Можно, поменяйте имя переменной, вместо To, на что-нибудь другое:
Dim To1 As String

 

Вопрос #000406: VB-6_и__текстовоый_файл

Автор вопроса: Григорьев // 06.08.2007 / 11:35

Здравствуйте, expert.

Подскажите, пожалуйста, как в VB-6 организовать извлечение данных из текстового файла?
Например, задав ID =F9 и число 15,7 (лежит в диапазоне 14...18), нужно получить +0,059 и +0.016 для дальнейших расчётов.
Фрагмент текстового файла -во вложении.
Таких "Таблиц" много готовых, поэтому преобразовывать их в какой-либо другой формат нецелесообразно.

С уважением, Григорьев Николай.

Текстовой файл:
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033:
034:
035:
036:
037:
038:
039:
040:
041:
042:
043:
044:
045:
046:
047:
048:
049:
050:
051:
052:
053:
054:
055:
056:
057:
058:
059:
060:
061:
062:
063:
064:
065:
066:
067:
068:
069:
070:
071:
072:
073:
074:
075:
076:
077:
078:
079:
080:
081:
082:
083:
084:
085:
086:
087:
088:
089:
090:
091:
092:
093:
094:
095:
096:
097:
098:
099:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
* Предельные отклонения отверстий по СТ СЭВ 144-88
* Для отверстий диаметром свыше "От" до диаметра "До"
** Не трогать колонки здесь и в других таблицах стандарта!
ID  От  До  ВО   НО
A9  3  6  +0.30  +0.27
A11  3  6  +0.345 +0.270
A13  3  6  +0.45  +0.27
B9  3  6  +0.17  +0.14
B11  3  6  +0.215 +0.140
B12  3  6  +0.26  +0.14
B13  3  6  +0.32  +0.14
C8  3  6  +0.088 +0.070
C9  3  6  +0.10  +0.07
C11  3  6  +0.145 +0.070
C12  3  6  +0.19  +0.07
C13  3  6  +0.25  +0.07
D6  3  6  +0.038 +0.030
D7  3  6  +0.042 +0.030
D8  3  6  +0.048 +0.030
D9  3  6  +0.06  +0.03
D10  3  6  +0.078 +0.030
D11  3  6  +0.105 +0.030
D12  3  6  +0.15  +0.03
E5  3  6  +0.025 +0.020
E6  3  6  +0.028 +0.020
E7  3  6  +0.032 +0.020
E8  3  6  +0.038 +0.020
E9  3  6  +0.05  +0.02
E10  3  6  +0.068 +0.020
F5  3  6  +0.015 +0.010
F6  3  6  +0.018 +0.010
F7  3  6  +0.022 +0.010
F8  3  6  +0.028 +0.010
F9  3  6  +0.04  +0.01
F10  3  6  +0.058 +0.010
G5  3  6  +0.009 +0.004
G6  3  6  +0.012 +0.004
G7  3  6  +0.016 +0.004
H4  3  6  +0.004
H5  3  6  +0.005
H6  3  6  +0.008
H7  3  6  +0.012
H8  3  6  +0.018
H9  3  6  +0.03
H10  3  6  +0.048
H11  3  6  +0.075
H12  3  6  +0.12
H13  3  6  +0.18
H14  3  6  +0.3
H15  3  6  +0.4
H16  3  6  +0.75
J6  3  6  +0.005 -0.003
J7  3  6  +0.006 -0.006
J8  3  6  +0.010 -0.008
Js4  3  6  +0.002 -0.002
Js5  3  6  +0.0025 -0.0025
Js6  3  6  +0.004 -0.004
Js7  3  6  +0.006 -0.006
Js8  3  6  +0.009 -0.009
Js9  3  6  +0.015 -0.015
Js10 3  6  +0.024 -0.024
Js11 3  6  +0.037 -0.037
Js12 3  6  +0.06  -0.06
Js13 3  6  +0.09  -0.09
Js14 3  6  +0.15  -0.15
K5  3  6      -0.005
K6  3  6  +0.002 -0.006
K7  3  6  +0.003 -0.009
K8  3  6  +0.005 -0.013
M5  3  6  -0.003 -0.008
M6  3  6  -0.001 -0.009
M7  3  6      -0.012
M8  3  6  +0.002 -0.016
N5  3  6  -0.007 -0.012
N6  3  6  -0.005 -0.013
N7  3  6  -0.004 -0.016
N8  3  6  -0.002 -0.020
N9  3  6      -0.03
N10  3  6      -0.048
P5  3  6  -0.011 -0.016
P6  3  6  -0.009 -0.017
P7  3  6  -0.008 -0.020
P8  3  6  -0.012 -0.030
P9  3  6  -0.012 -0.042
R6  3  6  -0.012 -0.020
R7  3  6  -0.011 -0.023
R8  3  6  -0.015 -0.033
S6  3  6  -0.016 -0.024
S7  3  6  -0.015 -0.027
T6  3  6
T7  3  6
U7  3  6  -0.019 -0.031
U8  3  6  -0.023 -0.041
Z8  3  6  -0.035 -0.053
A9  6  10  +0.316 +0.280
A11  6  10  +0.37  +0.28
A13  6  10  +0.50  +0.28
B9  6  10  +0.186 +0.150
B11  6  10  +0.24  +0.15
B12  6  10  +0.30  +0.15
B13  6  10  +0.37  +0.15
C8  6  10  +0.102 +0.080
C9  6  10  +0.116 +0.080
C11  6  10  +0.17  +0.08
C12  6  10  +0.23  +0.08
C13  6  10  +0.30  +0.08
D6  6  10  +0.049 +0.040
D7  6  10  +0.055 +0.040
D8  6  10  +0.062 +0.040
D9  6  10  +0.076 +0.040
D10  6  10  +0.098 +0.040
D11  6  10  +0.13  +0.04
D12  6  10  +0.19  +0.04
E5  6  10  +0.031 +0.025
E6  6  10  +0.034 +0.025
E7  6  10  +0.040 +0.025
E8  6  10  +0.047 +0.025
E9  6  10  +0.061 +0.025
E10  6  10  +0.083 +0.025
F5  6  10  +0.019 +0.013
F6  6  10  +0.022 +0.013
F7  6  10  +0.028 +0.013
F8  6  10  +0.035 +0.013
F9  6  10  +0.049 +0.013
F10  6  10  +0.071 +0.013
G5  6  10  +0.011 +0.005
G6  6  10  +0.014 +0.005
G7  6  10  +0.020 +0.005
H4  6  10  +0.004
H5  6  10  +0.006
H6  6  10  +0.009
H7  6  10  +0.015
H8  6  10  +0.022
H9  6  10  +0.036
H10  6  10  +0.058
H11  6  10  +0.09
H12  6  10  +0.15
H13  6  10  +0.22
H14  6  10  +0.36
H15  6  10  +0.58
H16  6  10  +0.9
J6  6  10  +0.005 -0.004
J7  6  10  +0.008 -0.007
J8  6  10  +0.012 -0.010
Js4  6  10  +0.002 -0.002
Js5  6  10  +0.003 -0.003
Js6  6  10  +0.0045 -0.0045
Js7  6  10  +0.007 -0.007
Js8  6  10  +0.011 -0.011
Js9  6  10  +0.018 -0.018
Js10 6  10  +0.029 -0.029
Js11 6  10  +0.045 -0.045
Js12 6  10  +0.075 -0.075
Js13 6  10  +0.11  -0.11
Js14 6  10  +0.18  -0.18
K5  6  10  +0.001 -0.005
K6  6  10  +0.002 -0.007
K7  6  10  +0.005 -0.010
K8  6  10  +0.006 -0.016
M5  6  10  -0.004 -0.010
M6  6  10  -0.003 -0.012
M7  6  10      -0.015
M8  6  10  +0.001 -0.021
N5  6  10  -0.008 -0.014
N6  6  10  -0.007 -0.016
N7  6  10  -0.004 -0.019
N8  6  10  -0.003 -0.025
N9  6  10      -0.036
N10  6  10      -0.058
P5  6  10  -0.013 -0.019
P6  6  10  -0.012 -0.021
P7  6  10  -0.009 -0.024
P8  6  10  -0.015 -0.037
P9  6  10  -0.015 -0.051
R6  6  10  -0.016 -0.025
R7  6  10  -0.013 -0.028
R8  6  10  -0.019 -0.041
S6  6  10  -0.020 -0.029
S7  6  10  -0.017 -0.032
T6  6  10
T7  6  10
U7  6  10  -0.022 -0.037
U8  6  10  -0.028 -0.050
Z8  6  10  -0.042 -0.064
A9  10  14  +0.333 +0.29
A11  10  14  +0.40  +0.29
A13  10  14  +0.56  +0.29
B9  10  14  +0.193 +0.150
B11  10  14  +0.26  +0.15
B12  10  14  +0.33  +0.15
B13  10  14  +0.42  +0.15
C8  10  14  +0.122 +0.095
C9  10  14  +0.138 +0.095
C11  10  14  +0.205 +0.095
C12  10  14  +0.275 +0.095
C13  10  14  +0.365 +0.095
D6  10  14  +0.061 +0.050
D7  10  14  +0.068 +0.050
D8  10  14  +0.077 +0.050
D9  10  14  +0.093 +0.050
D10  10  14  +0.12  +0.05
D11  10  14  +0.16  +0.05
D12  10  14  +0.23  +0.05
E5  10  14  +0.040 +0.032
E6  10  14  +0.043 +0.032
E7  10  14  +0.050 +0.032
E8  10  14  +0.059 +0.032
E9  10  14  +0.075 +0.032
E10  10  14  +0.102 +0.032
F5  10  14  +0.024 +0.016
F6  10  14  +0.027 +0.016
F7  10  14  +0.034 +0.016
F8  10  14  +0.043 +0.016
F9  10  14  +0.059 +0.016
F10  10  14  +0.086 +0.016
G5  10  14  +0.014 +0.006
G6  10  14  +0.017 +0.006
G7  10  14  +0.024 +0.006
H4  10  14  +0.005
H5  10  14  +0.008
H6  10  14  +0.011
H7  10  14  +0.018
H8  10  14  +0.027
H9  10  14  +0.043
H10  10  14  +0.07
H11  10  14  +0.11
H12  10  14  +0.18
H13  10  14  +0.27
H14  10  14  +0.43
H15  10  14  +0.7
H16  10  14  +1.1
J6  10  14  +0.006 -0.005
J7  10  14  +0.010 -0.008
J8  10  14  +0.015 -0.012
Js4  10  14  +0.0025 -0.0025
Js5  10  14  +0.004 -0.004
Js6  10  14  +0.0055 -0.0055
Js7  10  14  +0.009 -0.009
Js8  10  14  +0.013 -0.013
Js9  10  14  +0.021 -0.021
Js10 10  14  +0.035 -0.035
Js11 10  14  +0.055 -0.055
Js12 10  14  +0.09  -0.09
Js13 10  14  +0.135 -0.135
Js14 10  14  +0.215 -0.215
K5  10  14  +0.002 -0.006
K6  10  14  +0.002 -0.009
K7  10  14  +0.006 -0.012
K8  10  14  +0.008 -0.019
M5  10  14  -0.004 -0.012
M6  10  14  -0.004 -0.015
M7  10  14      -0.018
M8  10  14  +0.002 -0.025
N5  10  14  -0.009 -0.017
N6  10  14  -0.009 -0.020
N7  10  14  -0.005 -0.023
N8  10  14  -0.003 -0.030
N9  10  14      -0.043
N10  10  14      -0.07
P5  10  14  -0.015 -0.023
P6  10  14  -0.015 -0.026
P7  10  14  -0.011 -0.029
P8  10  14  -0.018 -0.045
P9  10  14  -0.018 -0.061
R6  10  14  -0.020 -0.031
R7  10  14  -0.016 -0.034
R8  10  14  -0.023 -0.050
S6  10  14  -0.025 -0.036
S7  10  14  -0.021 -0.039
T6  10  14
T7  10  14
U7  10  14  -0.026 -0.044
U8  10  14  -0.033 -0.060
Z8  10  14  -0.050 -0.077
A9  14  18  +0.333 +0.290
A11  14  18  +0.40  +0.29
A13  14  18  +0.56  +0.29
B9  14  18  +0.193 +0.150
B11  14  18  +0.26  +0.15
B12  14  18  +0.33  +0.15
B13  14  18  +0.42  +0.15
C8  14  18  +0.122 +0.095
C9  14  18  +0.138 +0.095
C11  14  18  +0.205 +0.095
C12  14  18  +0.275 +0.095
C13  14  18  +0.365 +0.095
D6  14  18  +0.061 +0.050
D7  14  18  +0.068 +0.050
D8  14  18  +0.077 +0.050
D9  14  18  +0.093 +0.050
D10  14  18  +0.12  +0.05
D11  14  18  +0.16  +0.05
D12  14  18  +0.23  +0.05
E5  14  18  +0.040 +0.032
E6  14  18  +0.043 +0.032
E7  14  18  +0.050 +0.032
E8  14  18  +0.059 +0.032
E9  14  18  +0.075 +0.032 
E10  14  18  +0.102 +0.032
F5  14  18  +0.024 +0.016
F6  14  18  +0.027 +0.016
F7  14  18  +0.034 +0.016
F8  14  18  +0.043 +0.016
F9  14  18  +0.059 +0.016  Пример из этой строки: ID =F9 и число 15,7 (лежит в диапазоне 14...18)
F10  14  18  +0.086 +0.016              надо получить: ВО= +0.059   НО= +0.016
G5  14  18  +0.014 +0.006
G6  14  18  +0.017 +0.006
G7  14  18  +0.024 +0.006
H4  14  18  +0.005
H5  14  18  +0.008
H6  14  18  +0.011
H7  14  18  +0.018
H8  14  18  +0.027
H9  14  18  +0.043
H10  14  18  +0.07
H11  14  18  +0.11
H12  14  18  +0.18
H13  14  18  +0.27
H14  14  18  +0.43
H15  14  18  +0.7
H16  14  18  +1.1
J6  14  18  +0.006 -0.005
J7  14  18  +0.010 -0.008
J8  14  18  +0.015 -0.012
Js4  14  18  +0.0025 -0.0025
Js5  14  18  +0.004 -0.004
Js6  14  18  +0.0055 -0.0055
Js7  14  18  +0.009 -0.009
Js8  14  18  +0.013 -0.013
Js9  14  18  +0.021 -0.021
Js10 14  18  +0.035 -0.035
Js11 14  18  +0.055 -0.055
Js12 14  18  +0.09  -0.09
Js13 14  18  +0.135 -0.135
Js14 14  18  +0.215 -0.215
K5  14  18  +0.002 -0.006
K6  14  18  +0.002 -0.009
K7  14  18  +0.006 -0.012
K8  14  18  +0.008 -0.019
M5  14  18  -0.004 -0.012
M6  14  18  -0.004 -0.015
M7  14  18      -0.018
M8  14  18  +0.002 -0.025
N5  14  18  -0.009 -0.017
N6  14  18  -0.009 -0.020
N7  14  18  -0.005 -0.023
N8  14  18  -0.003 -0.030
N9  14  18      -0.043
N10  14  18      -0.07
P5  14  18  -0.015 -0.023
P6  14  18  -0.015 -0.026
P7  14  18  -0.011 -0.029
P8  14  18  -0.018 -0.045
P9  14  18  -0.018 -0.061
R6  14  18  -0.020 -0.031
R7  14  18  -0.016 -0.034
R8  14  18  -0.023 -0.050
S6  14  18  -0.025 -0.036
S7  14  18  -0.021 -0.039
T6  14  18
T7  14  18
U7  14  18  -0.026 -0.044
U8  14  18  -0.033 -0.060
Z8  14  18  -0.060 -0.087

Отвечает: Алексей Немиро // 06.08.2007 / 11:53

Здравствуйте, Николай!

Ваш текстовой файл имеет определенную структуру, Вы можете
прочитать файл построчно, занося в переменные параметры, которые
находятся в файле, например:

001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033:
034:
035:
Dim sReadLine As String
'открываем файл для чтения
Open "C:\Данные.txt" For Input As #1
'считываем файл и выводим построчно _
пока EOF равен False
Do Until EOF(1)
 'читаем строку
 Line Input #1, sReadLine
 'если это не комментарий
 If Not Left(Trim(sReadLine), 1) = "*" Then
  'это не комментарий, значит это данные
  Dim ID As String
  Dim From As String
  Dim [To] As String 'в скобках, поскольку To является ключевым словом Visual Basic
  Dim BO As String
  Dim HO As String
  ID = Trim(Mid(sReadLine, 1, 6)) 'первые 6 символов в строке
  'функция Trim удаляет все пробелы по бокам
  If UCase(ID) = "F9" Then 'вместо "F9" надо поставить переменную, которая будет содержать искомое значение
   'нашли идишник, который нам нужен, получаем остальные данные
   From = Trim(Mid(sReadLine, 7, 5))
   'далее, поскольку это число, можем его преобразовать в число
   Dim dFrom As Double
   If IsNumeric(From) Then dFrom = CDbl(From)
   'остальные параметры
   [To] = Trim(Mid(sReadLine, 12, 5))
   '.. делаем тоже самое что и с From
   '..
   '...
   'и т.д. и т.п
   Exit Do 'выходим из цикла, т.к. все что нужно мы уже нашли
  End If
 End If
Loop
Close #1 'закрываем файл


--
С наилучшими пожеланиями,
Немиро Алексей

 


Чтобы задать Ваш вопрос, отправьте его на адрес expert@kbyte.ru

Раздел Эксперт на сайте Kbyte.Ru

Наверх

 

 

Последнее на форумах

Кодировка | Автор: Face
Добавлено: 24.08.2007 / 16:12 | ответов: 3 | просмотров: 42

Подскажите пожалуйста как корректно прочитать русский текст из текстового файла (C#) ?
Обычными средствами File.OpenText он читает файл в кодировке UTF-8, в результате русских символов там не остаётся.
Или нужно прочитанную строку как-то перекодировать потом ?

Ответить на это сообщение | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 1 | Автор: Face
Добавлено:24.08.2007 / 18:00
Я ошибся, не File.OpenText, а метод ReadLine();

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 2 | Автор: EROS
Добавлено:24.08.2007 / 20:11
Кодировка задается при открытии файла. Все объекты и наследники от Stream имеют конструктор, который в качестве параметра примает значение типа System.Text.Encoding. Именно этот конструктор Вам и надо использовать.

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 3 | Автор: Алексей
Добавлено:25.08.2007 / 05:04
Я ошибся, не File.OpenText, а метод ReadLine();

проще открыть файл в нужной кодировке, чем перекодировать каждую строку.

http://kbyte.ru/Forum/Show.aspx?id=5187
http://kbyte.ru/Forum/Show.aspx?id=6599
http://kbyte.ru/Expert/Show.aspx?id=67

msdn


[Visual Basic, C#] В следующем примере показан конструктор StreamReader.

Visual Basic


001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033:
034:
035:
036:
037:
038:
039:
Private Sub getNewStreamReader()
  Dim S As Stream = File.OpenRead("C:\Temp\Test.txt")
  'Get a new StreamReader in ASCII format from a
  'file using a buffer and byte order mark detection
  Dim SrAsciiFromFileFalse512 As StreamReader = New StreamReader("C:\Temp\Test.txt", _
    System.Text.Encoding.ASCII, False, 512)
  'Get a new StreamReader in ASCII format from a
  'file with byte order mark detection = false
  Dim SrAsciiFromFileFalse As StreamReader = New StreamReader("C:\Temp\Test.txt", _
    System.Text.Encoding.ASCII, False)
  'Get a new StreamReader in ASCII format from a file
  Dim SrAsciiFromFile As StreamReader = New StreamReader("C:\Temp\Test.txt", _
    System.Text.Encoding.ASCII)
  'Get a new StreamReader from a
  'file with byte order mark detection = false    
  Dim SrFromFileFalse As StreamReader = New StreamReader("C:\Temp\Test.txt", False)
  'Get a new StreamReader from a file
  Dim SrFromFile As StreamReader = New StreamReader("C:\Temp\Test.txt")
  'Get a new StreamReader in ASCII format from a
  'FileStream with byte order mark detection = false and a buffer
  Dim SrAsciiFromStreamFalse512 As StreamReader = New StreamReader(S, _
    System.Text.Encoding.ASCII, False, 512)
  'Get a new StreamReader in ASCII format from a
  'FileStream with byte order mark detection = false
  Dim SrAsciiFromStreamFalse = New StreamReader(S, _
    System.Text.Encoding.ASCII, False)
  'Get a new StreamReader in ASCII format from a FileStream
  Dim SrAsciiFromStream As StreamReader = New StreamReader(S, _
    System.Text.Encoding.ASCII)
  'Get a new StreamReader from a
  'FileStream with byte order mark detection = false
  Dim SrFromStreamFalse As StreamReader = New StreamReader(S, False)
  'Get a new StreamReader from a FileStream
  Dim SrFromStream As StreamReader = New StreamReader(S)

End Sub

_______________________
Colorized by: Eros.CodeSyntaxColor Engine


C#


001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033:
034:
035:
036:
037:
038:
039:
040:
041:
042:
043:
044:
045:
046:
047:
048:
049:
private void getNewStreamReader()
{
  //Get a new StreamReader in ASCII format from a
  //file using a buffer and byte order mark detection
  StreamReader srAsciiFromFileFalse512 =
    new StreamReader("C:\\Temp\\Test.txt",
    System.Text.Encoding.ASCII, false, 512);
  //Get a new StreamReader in ASCII format from a
  //file with byte order mark detection = false
  StreamReader srAsciiFromFileFalse =
    new StreamReader("C:\\Temp\\Test.txt",
    System.Text.Encoding.ASCII, false);
  //Get a new StreamReader in ASCII format from a file
  StreamReader srAsciiFromFile =
    new StreamReader("C:\\Temp\\Test.txt",
    System.Text.Encoding.ASCII);
  //Get a new StreamReader from a
  //file with byte order mark detection = false
  StreamReader srFromFileFalse =
    new StreamReader("C:\\Temp\\Test.txt", false);
  //Get a new StreamReader from a file
  StreamReader srFromFile =
    new StreamReader("C:\\Temp\\Test.txt");
  //Get a new StreamReader in ASCII format from a
  //FileStream with byte order mark detection = false and a buffer
  StreamReader srAsciiFromStreamFalse512 = new StreamReader(
    (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
    System.Text.Encoding.ASCII, false, 512);
  //Get a new StreamReader in ASCII format from a
  //FileStream with byte order mark detection = false
  StreamReader srAsciiFromStreamFalse = new StreamReader(
    (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
    System.Text.Encoding.ASCII, false);
  //Get a new StreamReader in ASCII format from a FileStream
  StreamReader srAsciiFromStream = new StreamReader(
    (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
    System.Text.Encoding.ASCII);
  //Get a new StreamReader from a
  //FileStream with byte order mark detection = false
  StreamReader srFromStreamFalse = new StreamReader(
    (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
    false);
  //Get a new StreamReader from a FileStream
  StreamReader srFromStream = new StreamReader(
    (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"));
}

_______________________
Colorized by: Eros.CodeSyntaxColor Engine


_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


реклама | Автор: Алексей
Добавлено: 24.08.2007 / 11:15 | ответов: 0 | просмотров: 15

Всем, кто стал свидетелем появления странной рекламы на сайте,
просьба сообщить в этот топик. Странная реклама - это реклама
портящая внешний вид сайта, или расположенная в перехлест с другими
элементами сайта, или расположенная сверху, перекрывающая контент, и/или другую рекламу.

_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Ответить на это сообщение | Посмотреть эту тему на сайте | Форум Kbyte.Ru


AJAX | Автор: Bille Gates
Добавлено: 22.08.2007 / 15:01 | ответов: 3 | просмотров: 52

И снова общеобразовательный вопрос :)
Подскажите статьи по AJAX ASP.net 2.0, особенно интересует создание собственных компонентов на нем... (статьи от майкрософт уже читал) Заранее благодарю :)

Ответить на это сообщение | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 1 | Автор: Алексей
Добавлено:22.08.2007 / 15:36
Каких еще компонентов?

_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 2 | Автор: Bille Gates
Добавлено:22.08.2007 / 15:45
Ну там-же есть отдельные самописные скрипты... точнее будут, если научусь... :) даже при установке аякса в Visual Studio появляется в окне new project доп. иконка... которая позволяет писать код для создания компонентов AJAX или дополнять их...

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 3 | Автор: Алексей
Добавлено:22.08.2007 / 15:57
JavaScript в зубы и вперед :)

_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Callback | Автор: Bille Gates
Добавлено: 22.08.2007 / 14:59 | ответов: 0 | просмотров: 24

И снова для общего развития, хочу спросить, как пользоваться функцией callback в АСП, для чего она нужна я догадываюсь, но хочется услышать научно и понятно... :) знаю что она как-то используется и с AJAX... для общения от серверного кода с клиентским... в общем все что не лень об этой ф-ции расскажите... пожалуйста.

Ответить на это сообщение | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Membership | Автор: Bille Gates
Добавлено: 22.08.2007 / 14:56 | ответов: 7 | просмотров: 77

Привет всем, давно я тут не постил, вот, решил ради приличия и общеобразования запостить вопросик :)
Интересно все про membership? т.е. как его использовать, настраивать, итп... :) ато надоело для каждого сайта делать регистрационный класс(переделывать под каждый сайт)

Ответить на это сообщение | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 1 | Автор: SocrAT
Добавлено:22.08.2007 / 15:13
Используй паттерны, ёпть!!!

_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 2 | Автор: Алексей
Добавлено:22.08.2007 / 15:18
http://msdn2.microsoft.com/en-us/library/6e9y4s5t.aspx
или

ASP.NET 2.0. Обзор новых сервисов, элементов управления и средств (2 часть)



Источник: realcoding.net

Новшества в области администрирования



Еще один ощутимый недостаток ASP.NET, исправленный в ASP.NET 2.0, — полное отсутствие декларативных или программных интерфейсов, предназначенных для администрирования Web-сайтов. Раньше для изменения параметров конфигурации приходилось запускать Notepad и редактировать Machine.config или Web.config. С этим покончено. В ASP.NET 2.0 имеется развитой API администрирования, упрощающий чтение и запись параметров конфигурации. Кроме того, есть GUI администрирования, показываемый в браузере при запросе файла Webadmin.axd.

На момент написания статьи разработка Webadmin.axd еще не закончена. Он будет служить для конфигурирования различных сервисов, входящих в ASP.NET 2.0 (например сервисов управления членством и ролями), просмотра статистики Web-сайта и настройки параметров защиты.

Сервис управления членством



Одно из лучших новых средств ASP.NET 2.0 — сервис управления членством (membership service), предоставляющий удобный API для создания учетных записей пользователей и управления ими. С появлением ASP.NET 1.x началось массовое применение аутентификации на основе форм, но, чтобы применять такую аутентификацию на практике, по-прежнему приходилось писать довольно много кода. Сервис управления членством устраняет этот недостаток аутентификации на основе форм в ASP.NET 1.x и значительно упрощает написание кода аутентификации на основе форм.

Для работы с Membership API служат два новых класса: Membership и MembershipUser. Первый содержит статические методы для создания пользователей, их проверки и др. MembershipUser представляет отдельных пользователей и содержит методы и свойства для считывания и смены паролей, получения даты последнего входа и т. д. Например, следующий оператор принимает имя и пароль пользователя и возвращает true или false в зависимости от того, допустим ли этот пользователь. Такие операторы заменят вызовы использовавшихся в приложениях ASP.NET 1.x самодельных методов, которые проверяли удостоверения защиты через Active Directory или серверные базы данных:

001:
002:
003:
004:
bool isValid = Membership.ValidateUser (username, password);

_______________________
Colorized by: Eros.CodeSyntaxColor Engine


Следующий оператор возвращает объект MembershipUser, представляющий пользователя с именем jeffpro:

001:
002:
003:
004:
MembershipUser user = Membership.GetUser ("jeffpro");

_______________________
Colorized by: Eros.CodeSyntaxColor Engine


Наконец, следующий оператор считывает адрес электронной почты зарегистрированного пользователя (предполагается, что этот адрес был сохранен):

001:
002:
003:
004:
string email = user.Email;

_______________________
Colorized by: Eros.CodeSyntaxColor Engine


Где хранятся имена пользователей, пароли и другие данные, c которыми работает сервис управления членством? Как и почти все сервисы ASP.NET 2.0, управляющие состоянием, этот сервис основан на провайдерах. Провайдеры — модули, позволяющие сервисам взаимодействовать с физическими источниками данных. В ASP.NET 2.0 будут входить провайдеры управления членством для баз данных Microsoft Access, SQL Server, службы каталогов Active Directory и, вероятно, для других источников данных. Вы можете написать собственные провайдеры для каких-либо источников данных. Роб Говард (Rob Howard), менеджер программы в группе Microsoft Web Platform and Tools детально рассмотрел эту тематику в статье «Nothin» But ASP.NET», доступной по ссылке http://msdn.microsoft.com/library/en-us/dnaspnet/html/asp02182004.asp.

По умолчанию сервис управления членством использует провайдер Access и хранит данные о членстве в файле AspNetDB.mdb, находящемся в подкаталоге Data приложения. Можно выбрать другие провайдеры, указав их в разделе <membership> файла Web.config. Редактировать Web.config вручную необязательно, его можно изменить с помощью Webadmin.axd. Следующий фрагмент взят из Web.config после того, как через Webadmin.axd я создал базу данных SQL Server с именем WhidbeyLogin и настроил сервис управления членством на ее использование:

001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
<membership defaultProvider="WhidbeyLogin">
<providers>
    <add name="WhidbeyLogin"
      type="System.Web.Security.SqlMembershipProvider, ..."
      connectionStringName="webAdminConnection632112624221191376"
      applicationName="/Whidbey" requiresUniqueEmail="false"
      enablePasswordRetrieval="true" enablePasswordReset="false"
      requiresQuestionAndAnswer="false"
      passwordFormat="Encrypted" />
</providers>
</membership>


Атрибут connectionStringName ссылается на строку подключения, содержащуюся в новом разделе <connectionStrings> файла Web.config. В ASP.NET 2.0 эту часть Web.config можно зашифровать, чтобы защитить строки подключения к базе данных.

Область применения Webadmin.axd не ограничивается созданием баз данных и выбором провайдеров управления членством. Это средство годится для создания пользователей, управления удостоверениями защиты и для других целей. Webadmin.axd и Membership API предоставляют декларативные и программные средства управления зарегистрированными пользователями вашего сайта. Это огромный шаг вперед по сравнению с ASP.NET 1.x, где проблему управления удостоверениями приходилось решать в основном своими силами.

Элементы управления регистрацией



Сервис управления членством значительно сократил объем кода, необходимого для проверки регистрационных данных и управления пользователями. Но, кроме этого сервиса, введено новое семейство элементов управления, называемых элементами управления регистрацией (login controls), которые еще больше упростили аутентификацию на основе форм. Такие элементы можно использовать как совместно с сервисом управления членством, так и без него. Однако они настолько хорошо интегрируются с этим сервисом, что при совместном использовании сервиса управления членством и элементов управления регистрацией типичные задачи вроде проверки имен и паролей пользователей и отправки забытых паролей по электронной почте можно решать без единой строки кода. Во врезке «Новые элементы управления, планируемые в ASP.NET 2.0» дан список элементов управления регистрацией, которые предполагается включить в ASP.NET 2.0.

Элемент Login, показанный на рис. , — центральный элемент семейства. Он не только предоставляет гибко настраиваемый UI, но и может вызывать метод Membership.ValidateUser для проверки имени и пароля пользователя. Login также может вызвать метод FormsAuthentication.RedirectFromLoginPage, чтобы перенаправить пользователя на страницу, которую он пытался получить перед тем, как был направлен на страницу входа. Затем FormsAuthentication.RedirectFromLoginPage создает аутенификационные cookie. Позже я покажу, как работают Login и другие элементы управления регистрацией.

Диспетчер ролей



Сервис управления членством и элементы управления регистрацией были бы неполными без поддержки защиты на основе ролей. В ASP.NET 1.x, чтобы использовать роли при аутентификации на основе форм, приходилось писать код, сопоставляющий информацию о ролях каждому поступающему запросу. В ASP.NET 2.0 введен диспетчер ролей, применяемый отдельно или совместно с сервисом управления членством. Диспетчер ролей избавляет от необходимости писать такой код и упрощает авторизацию доступа пользователей к различным ресурсам, основанную на ролях.

Управление ролями опирается на провайдеры и активизируется в Web.config. У диспетчера ролей есть API, реализованный в новом классе Roles, содержащем такие методы, как CreateRole, DeleteRole и AddUserToRole. Важно отметить, что вы можете вообще не вызывать эти методы, поскольку Webadmin.axd полностью поддерживает создание ролей, их назначение пользователям и т. д. Достаточно один раз активизировать защиту на основе ролей, и дальше она «просто работает», используя заданную информацию о ролях и директивы авторизации URL в файлах Web.config, уже знакомые вам по ASP.NET 1.x.

Познакомившись с сервисом управления членством, элементами управления регистрацией и диспетчером ролей, вы, наверное, хотели бы увидеть пример использования этих трех средств. В примеры кода к этой статье, которые вы можете скачать, входит двухстраничное приложение, демонстрирующее аутентификацию на основе форм в стиле Visual Studio 2005. Чтобы развернуть приложение и посмотреть, как оно работает, сначала скопируйте файлы PublicPage.aspx, LoginPage.aspx и Web.config в виртуальный каталог вашего Web-сервера. Создайте в виртуальном каталоге подкаталог Secure и скопируйте в него ProtectedPage.aspx и еще один файл Web.config.

Запустите Webadmin.axd и настройте сайт на поддержку аутентификации на основе форм, сервиса управления членством и диспетчера ролей, выбрав провайдер по своему усмотрению. Создайте пользователей Bob и Alice и роли Manager и Developer. Назначьте пользователю Bob роль Manager, а Alice — роль Developer. (Я не буду перечислять все выполняемые для этого операции, поскольку они скорее всего изменятся еще до того, как вы прочитаете статью. К счастью, интерфейс средства Webadmin.axd вполне понятен интуитивно, и в Webadmin.axd есть мастера, помогающие выполнить настройку.)

Далее откройте PublicPage.aspx в браузере и щелкните кнопку View Secret Message, чтобы посмотреть ProtectedPage.aspx. ASP.NET перенаправит вас на LoginPage.aspx, в которой для запроса имени и пароля пользователя применяется элемент Login. Войдите, указав имя и пароль пользователя Bob. Страница ProtectedPage.aspx откроется в браузере, поскольку Bob имеет роль Manager, а файл Web.config в каталоге Secure разрешает доступ менеджерам. Заметьте: в элементе LoginName показывается имя пользователя, а в элементе LoginStatus — ссылка Log out. Наконец, закройте браузер, снова запустите его и откройте PublicPage.aspx. Щелкните View Secret Message и войдите как Alice. На этот раз вы не сможете открыть ProtectedPage.aspx, так как Alice не является менеджером.

Я использовал аналогичное приложение для обучения аутентификации на основе форм в ASP.NET 1.x, но для версии 1.x пришлось написать гораздо больше кода. Версия 2.0 заслуживает похвалы за краткость кода — особенно за то, что не нужно писать код проверки удостоверений, введенных в форму входа, или сопоставлять имена пользователей ролям. Если вы до сих пор сомневаетесь, попробуйте написать то же самое приложение в ASP.NET 1.x! Кроме того, посмотрите изменения, внесенные Webadmin.axd в Web.config. Помимо всего прочего, вы увидите элемент <roleManager>, который активизирует диспетчер ролей и обычно задает провайдер, используемый при управлении ролями.

Возможно, вас интересует, выполняется ли при каждом запросе обмен информацией между диспетчером ролей и базой данных, где хранятся роли. К счастью, нет. Диспетчер ролей хранит роли в cookie, причем шифрует их для конфиденциальности. В том невероятном случае, когда пользователю назначено так много ролей, что размера cookie не хватает для их хранения, cookie содержит список последних ролей, а запрос к базе данных применяется лишь при необходимости.

Персонализация



Еще одна новинка — сервис персонализации, предоставляющий готовое решение для хранения персональных параметров, задаваемых посетителями сайта. В настоящее время такие параметры обычно хранят в cookie, в серверных базах данных или и там, и там. Независимо от того, где они хранятся, ASP.NET 1.x мало чем помогает в этом случае. Приходится своими силами создавать и настраивать серверное хранилище этих данных и получать данные персонализации по именам пользователей, прошедших аутентификацию, по cookie или каким-то другим способом.

Сервис персонализации ASP.NET 2.0 облегчает хранение и считывание персональных параметров пользователей. Он основан на профилях пользователей. Профили определяются в Web.config с помощью нового элемента <profile>. Ниже приведен фрагмент файла Web.config:

001:
002:
003:
004:
005:
006:
007:
<profile>
<properties>
    <add name="Theme" />
    <add name="Birthday" Type="System.DateTime" />
    <add name="LoginCount" Type="System.Int32" defaultValue="0" />
</properties>
</profile>


В нем определен профиль, содержащий три свойства: Theme строкового типа, Birthday типа DateTime и LoginCount целого типа. Последнее по умолчанию равно 0.

В период выполнения можно обращаться к этим свойствам текущего пользователя через свойство Profile страницы, которое ссылается на экземпляр динамически скомпилированного класса со свойствами, заданными в профиле. Например, следующие операторы считывают значения свойств из профиля текущего пользователя:

001:
002:
003:
004:
005:
006:
string theme = Profile.Theme;
DateTime birthday = Profile.Birthday;
int logins = Profile.LoginCount;

_______________________
Colorized by: Eros.CodeSyntaxColor Engine


Свойствам профиля можно присваивать значения:

001:
002:
003:
004:
005:
006:
Profile.Theme = "SmokeAndGlass";
Profile.Birthday = new DateTime (1959, 9, 30);
Profile.LoginCount = Profile.LoginCount + 1;

_______________________
Colorized by: Eros.CodeSyntaxColor Engine


Очевидным преимуществом персонализации является строгая типизация. Еще одно преимущество — то, что данные персонализации считываются и записываются по запросу. Этим они отличаются от состояния сеанса, которое загружается и сохраняется при каждом запросе независимо от того, используется оно или нет. Но, пожалуй, самое главное преимущество сервиса персонализации — не нужно явно задавать, где хранятся данные персонализации; система делает это за вас и хранит их постоянно. Когда эти данные потребуются, вы легко сможете обратиться к ним. В отличие от сеансов у профилей не истекает время ожидания.

Так где же хранятся данные персонализации? Возможны варианты. Сервис персонализации основан на провайдерах, поэтому его можно настроить на использование любого доступного провайдера. В ASP.NET 2.0 войдут минимум два провайдера персонализации: для Access и для SQL Server. Если не указано иное, сервис персонализации использует провайдер для Access, по умолчанию хранящий данные персонализации локально в DataAspNetDB.mdb. Вместо Access можно задействовать SQL Server, изменив Web.config вручную или через Webadmin.axd. Если вы не хотите хранить данные персонализации ни в Access, ни в SQL Server, пишите свой провайдер.

По умолчанию ASP.NET использует в качестве ключа к данным персонализации имя аутентифицированного пользователя, но можно настроить ASP.NET и на поддержку персонализации для анонимных пользователей. Прежде всего вы должны разрешить анонимную идентификацию, добавив в Web.config:

001:
<anonymousIdentification enabled="true" />


Затем добавьте allowAnonymous=true в свойства профиля, которые вы хотите хранить для анонимных пользователей:

001:
<name="Theme" allowAnonymous="true" />


Теперь свойство Theme будет доступно как персональный параметр независимо от того, прошли ли аутентификацию пользователи, которые обращаются к вашему сайту.

По умолчанию при анонимной идентификации, чтобы идентифицировать пользователей, повторно посещающих сайт, используются cookie. С помощью атрибутов, указываемых в <anonymousIdentification>, можно различными способами настроить эти cookie. Например, задать имя cookie и указать, надо ли шифровать содержимое cookie. Или настроить сервис персонализации на анонимную аутентификацию без cookie, при которой для идентификации пользователя, повторно посещающего сайт, применяется передача идентификатора сеанса через URL (URL munging). Предусмотрена даже возможность автоматического определения: если выполняющий запрос браузер поддерживает cookie, используются cookie, а в ином случае идентификатор сеанса передается в URL.

Чтобы посмотреть, как работает персонализация, запустите один из примеров кода к статье — Personalize.aspx. Эта страница позволяет каждому посетителю сайта выбрать тему, затем запоминает ее и применяет всякий раз, когда посетитель возвращается на сайт. Заметьте: тема программно применяется к странице в PreInit — новом событии, которое происходит перед Init.

Перед запуском примера разрешите анонимную аутентификацию и определите профиль, содержащий строковое свойство Theme. Следующий фрагмент кода из файла Web.config показывает, как решить эти две задачи:

001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
<configuration>
<system.web>
    <anonymousIdentification enabled="true" />
    <profile>
      <properties>
        <property name="Theme" allowAnonymous="true" />
      </properties>
    </profile>
</system.web>
</configuration>


Зависимости кэша от SQL-данных



Еще одна возможность, которой сильно не хватало в ASP.NET 1.x, — поддержка зависимостей кэша от базы данных. Элементы, помещаемые в кэш приложения ASP.NET, могли зависеть от других кэшированных элементов или объектов файловой системы, но не от записей базы данных. В ASP.NET 2.0 этот недостаток исправлен введением зависимостей кэша от SQL-данных (SQL cache dependencies).

Зависимости кэша от SQL-данных представляются экземплярами нового класса SQLCacheDependency. Применять их — проще некуда. Следующий оператор вставляет DataSet с именем ds в кэш приложения и создает зависимость между DataSet и таблицей Products базы данных Northwind:

001:
002:
003:
004:
Cache.Insert ("ProductsDataSet", ds, new SqlCacheDependency ("Northwind", "Products");

_______________________
Colorized by: Eros.CodeSyntaxColor Engine


Если содержимое таблицы Products изменится, ASP.NET автоматически удалит DataSet.

Зависимости кэша от SQL-данных можно использовать и в кэше вывода ASP.NET. Следующая директива указывает ASP.NET, что вывод страницы, содержащей данные, кэшируется до тех пор, пока не изменится содержимое таблицы Products или пока не пройдет 60 секунд (смотря что случится раньше):

001:
<%@ OutputCache Duration="60" VaryByParam="None" SqlDependency="Northwind:Products" %>


Зависимости кэша от SQL-данных можно использовать при работе с SQL Server 7.0, SQL Server 2000 и с будущей версией SQL Server 2005. SQL Server 2005 будет поддерживать зависимости кэша от SQL-данных без какой-либо предварительной настройки, а SQL Server 7.0 и SQL Server 2000 для поддержки этих зависимостей придется соответствующим образом сконфигурировать. Конфигурирование заключается в создании триггеров базы данных и специальной таблицы, к которой ASP.NET обращается, чтобы определить, внесены ли изменения. Эта таблица периодически опрашивается фоновым потоком через интервал, который задается при настройке и по умолчанию равен пяти секундам. В SQL Server 2005, чтобы определить, внесены ли изменения, не потребуются ни специальная таблица, ни периодический опрос. Кроме того, зависимости кэша от данных SQL Server 2005 можно применять на уровне записей, а зависимости кэша от данных SQL Server 7.0 ;или SQL Server 2000 работают на уровне таблиц. Чтобы настроить базу данных на поддержку зависимостей кэша от SQL-данных, можно воспользоваться утилитой Aspnet_regsqlcache.exe или Webadmin.axd.

Новая модель динамической компиляции



Одно из многих новшеств ASP.NET 1.x заключалось в том, что система могла компилировать код при первом обращении к нему. Однако автоматически компилировались только страницы, а вспомогательные классы, такие как компоненты доступа к данным, приходилось компилировать отдельно.

ASP.NET 2.0 расширяет модель динамической компиляции: теперь практически все можно компилировать автоматически. Каталог bin по-прежнему существует для обратной совместимости, но теперь его дополняют каталоги Code и Resources. Файлы с кодом на C# и Visual Basic в каталоге Code и файлы .resx и .resource в каталоге Resources автоматически компилируются ASP.NET и кэшируются в системных подкаталогах. Более того, WSDL-файлы (Web Services Description Language), скопированные в каталог Code, компилируются в прокси Web-сервисов, а XSD-файлы (XML Schema Definition Language) — в типизированные DataSet. Отредактировав файл Web.config, можно расширить применение этих каталогов, настроив поддержку динамической компиляции для других типов файлов.

Предкомпиляция и развертывание без исходного кода



Когда речь заходит о динамической компиляции, один из наиболее часто задаваемых вопросов по ASP.NET 1.x — можно ли заранее компилировать страницы, чтобы при первом обращении к странице не было задержки из-за затрат времени на компиляцию. Сам по себе вопрос не совсем корректен (задержка минимальна и связанные с ней издержки пренебрежимо малы, если принять во внимание, что потом выполняются тысячи или даже миллионы запросов). Тем не менее Microsoft посчитала своим долгом сделать кое-что, чтобы облегчить жизнь разработчикам. Это «кое-что» — возможность заранее скомпилировать все страницы приложения, отправив запрос фантомному ресурсу precompile.axd.

Но это еще не все, что сделано в области предкомпиляции. Еще одна широко востребованная возможность — способность заранее компилировать все приложения в управляемые сборки, которые допускается развертывать без исходного кода, что особенно удобно при хостинге. В ASP.NET 2.0 введена новая утилита командной строки — Aspnet_compiler.exe, которая выполняет предкомпиляцию и развертывание без исходного кода; в Visual Studio 2005 войдет аналогичное средство. Следующая команда выполняет предкомпиляцию приложения в каталоге Web1 и развертывает его без исходного кода в каталоге Web2:

001:
Aspnet_compiler -v /web1 -p c:web1 c:web2


После выполнения команды каталог назначения содержит пустые файлы ASP.NET (ASPX, ASCX, ASIX и т. д.) и копии любого статического содержимого исходного каталога: HTML-файлы, .config-файлы и файлы изображений. Развертывание без исходных текстов не обеспечивает «железную» защиту вашей интеллектуальной собственности (поскольку квалифицированный сотрудник Интернет-провайдера все равно сможет разобраться в вашем приложении, декомпилировав сгенерированные сборки), но значительно поднимает барьер перед обычными взломщиками кода.

Новая модель разделения кода



ASP.NET 1.x поддерживает две программные модели: встраиваемого кода (inline model), в которой HTML и код сосуществуют в одном ASPX-файле, и отделенного (codebehind model), где HTML хранится отдельно в ASPX-файле, а код содержится в файлах исходного кода (например в C#-файлах). В ASP.NET 2.0 вводится третья модель: новая форма отделенного кода, основанная на поддержке частичных классов компиляторами Visual C# и Visual Basic .NET. Новая модель призвана исправить неприятный недостаток исходной модели; он заключался в том, что традиционные классы отделенного кода должны были содержать защищенные поля, чьи имена и типы сопоставляются элементам управления, объявленным в ASPX-файле.

В листингах 710 и 8 показано, как работает новая модель отделенного кода. Hello.aspx содержит декларативную часть страницы, а Hello.aspx.cs — код. Обратите внимание на атрибут CompileWith в директиве @ Page. Также заметьте, что в классе MyPage отсутствуют какие бы то ни было поля, сопоставляемые элементам управления, объявленным в ASPX-файле. Старая модель отделенного кода по-прежнему поддерживается, но в дальнейшем предпочтение будет отдаваться новой модели. Не удивительно, что в Visual Studio 2005 будет встроена поддержка новой модели разделения кода.

Листинг 7. Модель отделенного кода. Файл Hello.aspx

001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
<%@ Page CompileWith="Hello.aspx.cs" ClassName="MyPage" %>

<html>
<body>
    <form runat="server">
      <asp:TextBox ID="Input" RunAt="server" />
      <asp:Button Text="Test" OnClick="OnTest" RunAt="server" />
      <asp:Label ID="Output" RunAt="server" />
    </form>
</body>
</html>


Листинг 8. Модель отделенного кода. Файл Hello.aspx.cs

001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
using System;

partial class MyPage
{
  void OnTest (object sender, EventArgs e)
  {
    Output.Text = "Hello, " + Input.Text;
  }
}

_______________________
Colorized by: Eros.CodeSyntaxColor Engine


Клиентский диспетчер обратных вызовов



Одна из моих любимых функций ASP.NET 2.0 — «облегченный» возврат формы («lightweight» postback), обеспечиваемый клиентским диспетчером обратных вызовов. Раньше страницы ASP.NET, чтобы вызвать код на стороне сервера, должны были возвратить форму серверу. Возвраты формы неэффективны, так как возвращаются все данные, сгенерированные элементами управления страницы. Кроме того, при возврате формы выполняется актуализация страницы, что вызывает неприятное мигание.

В ASP.NET 2.0 вводится клиентский диспетчер обратных вызовов, позволяющий страницам выполнять обратные вызовы сервера без полного возврата формы. Обратные вызовы асинхронны и выполняются с использованием XML-HTTP. В их данные не включаются возвращаемые данные (postback data), и они не приводят к актуализации страницы. (На серверной стороне до события PreRender страница обрабатывается, как обычно, но затем обработка прекращается, поэтому HTML-данные заново не отображаются.) При этом браузер должен поддерживать протокол XML-HTTP, т. е. нужен Microsoft Internet Explorer версии 5.0 или выше.

Для использования клиентского диспетчера обратных вызовов требуется выполнить три операции. Во-первых, вызовите Page.GetCallbackEventReference, чтобы получить функцию, вызываемую из клиентского сценария для обратного вызова сервера по протоколу XML-HTTP. ASP.NET вернет имя и реализацию этой функции. Во-вторых, напишите метод клиентского сценария, вызываемый, когда обратный вызов возвращает управление. Имя метода — один из аргументов, передаваемых GetCallbackEventReference. В-третьих, реализуйте в странице интерфейс ICallbackEventHandler. В нем содержится единственный метод RaiseCallbackEvent, вызываемый на стороне сервера, когда выполняется обратный вызов. Строка, возвращаемая RaiseCallbackEvent, передается методу, о котором говорилось в описании предыдущей операции.

Код в листинге 9 показывает, как работают клиентские обратные вызовы, и демонстрирует одно из наиболее типичных практических применений таких вызовов. Страница выводит форму, запрашивающую имя и адрес. Введите ZIP-код 378xx или 379xx в поле Zip Code и щелкните кнопку Autofill — в поле City появится название города. Страница обращается к серверу, чтобы получить название города, причем для этого выполняется клиентский обратный вызов, а не полный возврат формы. На практике для преобразования ZIP-кода в название города скорее всего выполнялся бы запрос к базе данных. Заметьте: страница не перерисовывается в отличие от ситуаций, когда используется возврат формы серверу. Информация на странице обновляется быстро и корректно!

Листинг 9. Callback.aspx

001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033:
034:
035:
036:
037:
038:
039:
040:
041:
042:
043:
044:
045:
046:
047:
048:
049:
050:
051:
052:
053:
054:
055:
056:
057:
058:
059:
060:
061:
062:
063:
064:
065:
066:
067:
068:
069:
070:
071:
072:
073:
074:
075:
076:
077:
078:
079:
080:
081:
082:
083:
084:
085:
086:
087:
088:
089:
<%@ Implements Interface="System.Web.UI.ICallbackEventHandler" %>

<html>
<body>
  <h1>Please Register</h1>
  <hr>
  <form runat="server">
   <table>
    <tr>
     <td>First Name</td>
     <td><asp:TextBox ID="FirstName" RunAt="server" /></td>
     <td></td>
    </tr>
    <tr>
     <td>Last Name</td>
     <td><asp:TextBox ID="LastName" RunAt="server" /></td>
     <td></td>
    </tr>
    <tr>
     <td>Address 1</td>
     <td><asp:TextBox ID="Address1" RunAt="server" /></td>
     <td></td>
    </tr>
    <tr>
     <td>Address 2</td>
     <td><asp:TextBox ID="Address2" RunAt="server" /></td>
     <td></td>
    </tr>
    <tr>
     <td>City</td>
     <td><asp:TextBox ID="City" RunAt="server" /></td>
     <td></td>
    </tr>
    <tr>
     <td>State</td>
     <td><asp:TextBox ID="State" RunAt="server" /></td>
     <td></td>
    </tr>
    <tr>
     <td>Zip Code</td>
     <td><asp:TextBox ID="Zip" RunAt="server" /></td>
     <td><asp:Button ID="AutofillButton" Text="Autofill"
      RunAt="server" /></td>
    </tr>
   </table>
  </form>
</body>
</html>

<script language="javascript">
// Функция, вызываемая, когда обратный вызов возвращает управление
function __onCallbackCompleted (result, context)
{
  // Показываем в поле ввода "City" строку,
  // возвращаемую методом RaiseCallbackEvent сервера
  document.getElementById (City).value = result
}
</script>

<script language="C#" runat="server">
void Page_Load (object sender, EventArgs e)
{
  // Получаем код события обратного вызова
  // (например "__doCallback (...)")
  string cbref = GetCallbackEventReference (this,
    "document.getElementById (Zip).value",
    "__onCallbackCompleted", "null", "null");

  // Связываем событие обратного вызова с кнопкой Autofill
  // через атрибут onclick (и добавляем "return false" в код
  // события, чтобы не было возврата формы)
  AutofillButton.Attributes.Add ("onclick",
    cbref + "; return false;");
}

// Обработчик события обратного вызова на серверной стороне
string ICallbackEventHandler.RaiseCallbackEvent (string arg)
{
  if (arg.StartsWith ("378"))
    return "Oak Ridge";
  else if (arg.StartsWith ("379"))
    return "Knoxville";
  else
    return "Unknown";
}
</script>

_______________________
Colorized by: Eros.CodeSyntaxColor Engine


Заключение



В ASP.NET 2.0 много других новых средств, не рассмотренных в статье. Например, встроенный сервис ведения статистики сайта (site-counter service) позволяет вести статистику использования сайта и просматривать ее в Webadmin.axd или в GUI собственной разработки. Новая подсистема Web Parts предоставляет инфраструктуру для разработки порталов в стиле SharePoint Server. Интегрированная поддержка мобильных устройств означает, что больше не придется устанавливать отдельный инструментальный набор, чтобы адаптировать вывод к PDA и другим устройствам с небольшим объемом памяти. Внесена масса усовершенствований в существующие элементы управления, благодаря чему они стали более гибкими средствами разработки Web-страниц, основанных на компонентах.

Пора уже сейчас приступать к ознакомлению с ASP.NET 2.0: зная, что появится в новой версии (и что не появится), вы сможете уже сегодня планировать архитектуру, на которую будет легко перейти завтра. Ваши приложения для ASP.NET 1.x должны работать в версии 2.0 без изменений, поскольку Microsoft пообещала, что обеспечит совместимость со старой платформой. Но будущее принадлежит ASP.NET 2.0, и в этом будущем вы сможете получить более мощную функциональность с меньшими усилиями. Неужели вы этому не рады?

и так до бесконечности..

_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 3 | Автор: Bille Gates
Добавлено:22.08.2007 / 15:19
Меня это не волнует :) мне просто интересно узнать о membership ибо это технология от MS и если я хочу считаться более или менее профессионалом в программировании, то я должен знать как это работает...

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 4 | Автор: Bille Gates
Добавлено:22.08.2007 / 15:24
простите пост: "Меня это не волнует :) мне просто интересно узнать о membership ибо это технология от MS и если я хочу считаться более или менее профессионалом в программировании, то я должен знать как это работает..."
-не относился к ответу Алексея... видимо я просто долго писал :) пост был ответом SoqcrATу

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 5 | Автор: Алексей
Добавлено:22.08.2007 / 15:29
Меня это не волнует :) мне просто интересно узнать о membership ибо это технология от MS и если я хочу считаться более или менее профессионалом в программировании, то я должен знать как это работает...

Тебе вовсе не надо знать, как работает membership, тебе достаточно
знать и самое главное понимать ООП .NET, тогда ты сможешь работать с тем, что даже еще не придумали :)
А как это работает тебе объяснять бессмысленно, и если ты будешь
продолжать копать, то рано или поздно сам сможешь ответить на свой вопрос.

_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 6 | Автор: SocrAT
Добавлено:22.08.2007 / 15:47
Извиняюсь за оффтоп, но ТАК мой ник еще не коверкали.

_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 7 | Автор: Bille Gates
Добавлено:22.08.2007 / 16:01
извиняюсь... не со зла :) очепятка :)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Наверх

 

Последние статьи

Взаимодействие с другими сайтами через HTTP (HttpWebRequest и HttpWebResponse)
Автор: Немиро Алексей | добавлено: 27.07.2007 / 14:01 | просмотров: 521

В данной статье речь пойдет о том, как можно программно заполнить и отправить Web-форму, а также получить результат с использованием довольно простых классов - HttpWebRequest и HttpWebResponse.

Работа с SQL – Запросы
Автор: Хабибулин А. (aka Bille Gates) | добавлено: 22.07.2007 / 04:43 | просмотров: 898

В данной статье рассмотрены часто используемые SQL-запросы и приведены примеры их использования.

Использование XML.Serialization
Автор: Немиро Алексей | добавлено: 19.07.2007 / 15:38 | просмотров: 224

В данном обзоре речь пойдет об использование XML.Serialization в .NET и ее применении на примере сохранения и считывания настроек программы с использованием синтаксиса языка Visual Basic .NET.

Выбор языка программирования для научных работ (2-я редакция)
Автор: Юдин С. Ю. | добавлено: 15.03.2007 / 02:49 | просмотров: 1968

Идея написания этой статьи возникла после того, как на одном из сайтов по физике http://physics.nad.ru/aniboard/messages/291.html я обнаружил интересный алгоритм моделирования движения тела в поле постоянной напряженности по различным направляющим. Вернее, меня заинтересовал не весь алгоритм, т.к. основа их всех одна (принцип Даламбера, если не считать квазиалгоритма с применением уравнений Лагранжа 2-го рода) и различаются они только способом определения реакций в месте соприкосновения тел. ...

Работаем с MIME
Автор: Немиро Алексей | добавлено: 29.11.2006 / 14:46 | просмотров: 1908

Не так давно мне пришлось немного поработать MIME (Multipurpose Internet Mail Extension) - это стандарт почтовых сообщений, в РуНете (Russian Internet) я не нашел нормального описания спецификации MIME, и посему решил написать небольшую статейку на эту тему. В данной статье вы узнаете об основных особенностях и стандартах MIME, а также научитесь «читать» MIME с использованием синтаксиса языка Visual Basic .NET 2005.

 

Статьи на Kbyte.Ru

Наверх

 

Интересные коды и решения

Анализ даты стандарта MM/DD/YYYY и MM/DD/YY
Дата добавления: 24.03.2007 / 10:59 | просмотров: 400 | платформа: RegEx

Как обработать не существующий адрес?
Дата добавления: 31.07.2006 / 14:45 | просмотров: 571 | платформа: ASP .NET (VB)

Как проверить корректность E-Mail?
Дата добавления: 17.08.2006 / 18:18 | просмотров: 708 | платформа: VB

Любое число не равное нулю
Дата добавления: 24.03.2007 / 11:31 | просмотров: 258 | платформа: RegEx

Перекодировка текста из DOS в Windows и обратно
Дата добавления: 31.07.2006 / 12:31 | просмотров: 690 | платформа: VB

Как заблокировать кнопку "Закрыть" ([X])
Дата добавления: 31.07.2006 / 12:12 | просмотров: 593 | платформа: VB

Как получить значение определенного параметра из строки запроса?
Дата добавления: 31.07.2006 / 15:42 | просмотров: 514 | платформа: ASP .NET (VB)

Как запретить запуск двух копий программы?
Дата добавления: 04.08.2006 / 08:53 | просмотров: 606 | платформа: VB

Как получить случайное число?
Дата добавления: 16.08.2006 / 19:52 | просмотров: 472 | платформа: VB

Как узнать размер рабочей области экрана?
Дата добавления: 23.08.2006 / 19:03 | просмотров: 857 | платформа: VB .NET

 

Универсальные коды на Kbyte.Ru

Наверх

 

Юмор на Kbyte.Ru

Ты мне сегодня во сне пpиснилась!
- В эpотическом?
- Hет, в обычном.
- А как ты их вообще pазличаешь?
- А у эpотических pасшиpение *.JPG

 

Рейтинг: 73
Всего голосов: 123
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Идет Илья Муромец по полю. Видит - Змей Горыныч сидит. Ну, тот подкрался к нему и срубил ему голову. У Змея Горыныча две
выросло. Срубил Илья ему две - четыре выросло! Срубил четыре - выросло восемь!!! И так далее... И вот когда Илья Муромец
срубил 65535 голов, Змей Горыныч помер...
Потому что был он 16-ти битным.

 

Рейтинг: 51
Всего голосов: 80
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

- "Hе" с глаголами пишется вместе или отдельно?
- Через пробел!

 

Рейтинг: 103
Всего голосов: 145
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

На работе не вышла секретарша, ком. директор мучается, кто напечатает ему документ. Соглашаюсь, печатаю, даю прочитать и спрашиваю сколько экземпяров распечатать?
Ответ был уверенный: " Конечно, два, я же один им по факсу отправлю!"

 

Рейтинг: 72
Всего голосов: 110
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Афиша на дверях борделя:
"Только в декабре крошка Сорти творит чудеса даже в холодной воде!".

 

Рейтинг: 50
Всего голосов: 63
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Заходит наркоман в телефонную будку и начинает там мочиться. Стоящая рядом женщина, возмущенная увиденным, кричит на него:
– Как вам не стыдно?! Немедленно выходите!
Наркоман говорит:
– Вот, блин! В женский попал!

 

Рейтинг: 722
Всего голосов: 1021
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

- Жена меня ну совсем достала! Все время шипит на меня!
- А может, она сконнектиться пытается?

 

Рейтинг: 105
Всего голосов: 139
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Встречаются два программиста.
- Как дела?
- Да вот, с досом проблемы.
- А что случилось? Компьютер не грузится, Command.com виснет или что-нибудь другое?
- Да дет, у бедя дасморк!

Прислал MAGICIAN

 

Рейтинг: 740
Всего голосов: 1058
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Сетевые технологии и сексуальная ориентация:
1. Клиент-сервер - мужчина и женщина.
2. Сервер-сервер - лесбиянки.
3. Клиент-клиент - гомосексуалисты.
4. Сам себе клиент и сам себе сервер - онанист.

 

Рейтинг: 45
Всего голосов: 75
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Приходит мужик в кабак:
- Я вчера тут весь вечер провёл?
- Тут.
- А зарплату всю пропил?
- Всю.
- Фу-у-у... Слава богу, а я думал, что потерял.

 

Рейтинг: 78
Всего голосов: 117
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Весь юмор на Kbyte.Ru

Наверх


Выпуск подготовил: R-KDR-19826

Редактор: Немиро Алексей

Copyright (c) Nemiro AS, 2005-2007


В избранное