IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   Помогите с VB и API pls (http://www.imho.ws/showthread.php?t=96384)

GreatLion 24.11.2005 09:26

Помогите с VB и API pls
 
Спасибо всем кто помогал с предыдущими вопросоми.
Пожалуйста, если кто-то знает как, или где можно взять, скажите как написать на VB6 Tray bar. Т.е. то окошечко где иконки, свернутые. Я пытался очень долго. Все списки функций перерывал, но ничего не нашел. Этот новый(написаный) трэй должен отлавливать окна, которые там сидят, отлавливать их иконки, и самое главное - это посылать им сообщения о клике. Как я ни пытался все тщетно. Кто может, помогите! :confused:

Ghost 24.11.2005 09:36

GreatLion
Например, считывай посимвольно и добавляй к строке пока не встретишь пробел:
Код:

program num;
var a,b:string; c:char; f:text;

begin
assign(f,'input.dat');
reset(f);
a:=''; repeat read(f,c); if c<>' ' then a:=a+c; until c=' ';
b:=''; repeat read(f,c); if c<>' ' then b:=b+c; until c=' ';
write(a,' - ',b);
close(f);
read;{}
end.

Или считывай строку целиком, а потом разбивай ее на части...

З.Ы. Кстати, не забывай закрывать файл. И задержку можно делать, не указывая имени переменной в read. А лучше делать это функцией readkey из модуля CRT.

З.З.Ы. Вот код для считывания по строкам и разрезания строк по пробелам в массив:
Код:

uses
  crt;

var
  a:      array [0..32] of string;
  s:      string;
  n, i, j: integer;
  f:      text;

begin
  clrscr;
  assign(f, 'input.dat');
  {$I-}
  reset(f);
  {$I+}
  if IOResult = 0 then begin
    n := 0;
    repeat
      readln (f, s);
      while s <> '' do begin
        i := 1; while (i <= length (s)) and (s[i] = ' ') do inc (i);
        if i < length (s) then begin
          s := copy (s, i, length (s) - i + 1);
          j := pos (' ', s) - 1; if j = -1 then j := length (s);
          a[n] := copy (s, 1, j);
          inc (n);
          if j = length (s) then s := ''
                            else s := copy (s, j + 1, length (s) - j);
        end;
      end;
    until eof (f);
    dec (n);
    for i := 0 to n do
      writeln (a[i]);
    close (f);
  end else writeln('Can''t open file ''input.dat''');
  write ('press any key to exit...');
  readkey;
end.


GreatLion 24.11.2005 09:47

Спасибо. Этот вариант подходит.

Part 01.12.2005 14:32

Большое спасибо тем, кто мне поможет разобраться с VB6.0.
Пытаюсь создать свою БД, но...
Там везде надо подключаться к какому-то серверу.
Но у меня нет такой возможности.
Неужели нельзя разработать свою, уникальную БД, без подключений к чему бы то нибыло? :mad:

Ghost 01.12.2005 14:56

Юзай DBF файлы.

DOric 02.12.2005 15:46

Я новичек в програмирование тока изучаю, если кто может помагите пожалуйста. :help:
Как сделать так, чтобы из базы данных (из документа формата БЛОКНОТ) из 50 вопросов случайным образом выводились на экран любые 15? И как поставить таймер на эти 15 вопросов? (т.е. чтобы пользователь думал
над этими 15 вопросами не более 5 минут: как только время заканчивается, сразу выдается результат, независимо от того, на сколько вопросов он успел ответить в течение этих 5 минут.)

ЕЖ 02.12.2005 15:49

DOric
Ты опиши сначала что у тебя за среда разработки? Язык я так понял паскаль - но Delphi или досовский Turbo Pascal 7.0?

DOric 02.12.2005 17:13

Turbo Pascal 7.0 досовский

VDen 02.12.2005 17:14

Вообще - надо считать файл в массив, а потом просто случайно показывать 15 строк из этого массива. Тут тебе поможет функция ReadLn.

А насчет таймера - тут да, важно знать, какая среда.

ЕЖ 02.12.2005 17:18

DOric
А ответы на вопрос должны вводится пользователем в виде текста или это будет выбор, скажем, номера ответа (типа тест)? Т.е. ожидание нажатия клавиши или работа, скажем, той же readln. Это к вопросу о способе реализации таймера.

DOric 02.12.2005 17:21

Если мона то покажите в примерчеке в не большом особенно про таймер

ЕЖ
номера ответа (тест) ползователь выбирает из данных ему ответов

ЕЖ 02.12.2005 17:38

Ну примерно так:
Код:

repeat
  if KeyPressed then
  begin
    ch:=readkey;
    if (ch in ['1'..'9']) then
    begin
      { обработка нажатой клавиши 1-9 в соотв. с вариантом ответа }
    end;
  end;
  { опрос текущего времени функцией GetTime(h,m,s,hund) модуля Dos и вычисление прошедшего интервала (формирование условия окончания цикла) }
until ({ условие окончания цикла });


DOric 04.12.2005 15:47

ЕЖ
Спасибо за помощь :)

UriF 12.12.2005 23:51

http://www.codeguru.com/columns/VB/article.php/c6547/
http://www.vikasumit.com/tutorial/pr..._6/systray.php
http://www.devx.com/vb2themax/Tip/18407


Часовой пояс GMT +4, время: 15:41.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.