Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

08.03.2010, 17:22
|
|
Участник форума
Регистрация: 07.02.2010
Сообщений: 189
Провел на форуме: 870084
Репутация:
79
|
|
там числовой индекс указывается. test1[1] , test[2] и т.д.. По крайней мере в Delphi так.
|
|
|

08.03.2010, 17:31
|
|
Постоянный
Регистрация: 26.01.2008
Сообщений: 796
Провел на форуме: 5209663
Репутация:
357
|
|
Сообщение от fenixelite
там числовой индекс указывается. test1[1] , test[2] и т.д.. По крайней мере в Delphi так.
Жаль, в PHP можно и имя назначить
|
|
|

08.03.2010, 17:33
|
|
Участник форума
Регистрация: 20.12.2008
Сообщений: 277
Провел на форуме: 828081
Репутация:
84
|
|
Не надо 2 массивов если работаешь с текстом. есть варианты проще:
TStringList
Код:
Пример кода : Использование строк название-значение var names : TStringList; // Определение нашей переменной списка строк ageStr : String; i : Integer; begin // Определение объекта списка строк, и указание нашей переменной на него names := TStringList.Create; // Теперь добавляем несколько названия в наш список names.CommaText := 'Neil=45, Brian=63, Jim=22'; // И теперь находим возраст Брайена ageStr := names.Values['Brian']; // Показ этого значения ShowMessage('Возраст Brian'а = '+ageStr); // Теперь отображаем все имена и значение возраста for i := 0 to names.Count-1 do begin ShowMessage(names.Names[i]+' - '+names.ValueFromIndex[i]); end; end; Возраст Brian'а 63 Neil - 45 Brian - 63 Jim - 22
Источник: http://delphibasics.ru/TStringList.php
Самое то для таких вещей
И имена можно использовать
Последний раз редактировалось GhostOnline; 08.03.2010 в 17:36..
|
|
|

08.03.2010, 17:35
|
|
Участник форума
Регистрация: 07.02.2010
Сообщений: 189
Провел на форуме: 870084
Репутация:
79
|
|
В общем сделал в 2 массивами, думаю сам разберешься, что к чему.
http://slil.ru/28760299
|
|
|
Помогите организовать поиск |

08.03.2010, 17:35
|
|
Новичок
Регистрация: 09.12.2009
Сообщений: 23
Провел на форуме: 42989
Репутация:
0
|
|
Помогите организовать поиск
program Records;
uses
crt, strings;
const
max = 100;
type
Ttrain = record
Otpravlenie : string[40];
Pribitie : string[40];
Category : string[10];
Time : string[10];
Number : string[10];
end;
Ttrains = array [1..max] of Ttrain;
procedure SngWindow(x1,y1,x2,y2,tc,c : byte);
begin
window(x1,y1,x2,y2);
textbackground(c); textcolor(tc);
clrscr;
end;
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;
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);
repeat
DblWindow(1,1,80,5,YELLOW,MAGENTA,BLUE);
writeln;
write(' 1.ADD 2.DELETE 3.PRINT 4.SEARCH 5.EXIT');
readln(s);
val(s,punkt,er);
until (er=0) and (punkt>=1) and (punkt<=5);
Menu := punkt;
end;
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);
repeat
{Нарисовать окно для главного меню}
DblWindow(1,1,80,5,YELLOW,MAGENTA,BLUE);
writeln;
write(' 1.Otpravlenie 2.Pribitie 3.Number 4.Exit');
readln(s); {ввод номера пункта меню}
val(s,punkt,er);
until (er=0) and (punkt>=1) and (punkt<=4);
SubMenu := punkt;
end;
procedure AddRecord(var mas : Ttrains; var n : byte; size : byte);
var
s : String;
er : integer;
begin
if (n+1 <= size) then
begin
inc(n);
write('Otpravlenie =>'); readln(mas[n].Otpravlenie);
write('Pribitie =>'); readln(mas[n].Pribitie);
write('Category =>'); readln(mas[n].Category);
write('Time =>'); readln(mas[n].Time);
write('Number =>'); readln(mas[n].number);
writeln('Книга добавлена в каталог!');
end
else writeln('Недостаточно места в каталоге!');
end;
procedure PrintRecord(var mas : Ttrains; i : integer);
begin
write(i:3);
with mas[i] do
begin
write(Otpravlenie:23); write(Pribitie:20);
write(Category:10); write(Time:10);
write(Number:12);
writeln;
end;
end;
procedure Print(var mas : Ttrains; n : integer);
var
i : integer;
begin
writeln('#':3,'Otpravlenie':23,'Pribitie':20,'Cate gory':10,'Time':10,'Number':12);
for i:=1 to n do
PrintRecord(mas,i);
end;
procedure DelRecordByName(var mas : Ttrains; var n : byte; bname : string);
var
i,j : integer; {номера книг в каталоге}
begin
writeln('#':3,'Otpravlenie':23,'Pribitie':20,'Cate gory':10,'Time':10,'Number':12);
for i:=1 to n do
begin
with mas[i] do
if (Otpravlenie = otpravlenie) then
begin
PrintRecord(mas,i);
for j:=i+1 to n do
mas[j-1] := mas[j];
dec(n);
end;
end;
end;
procedure FindByname(var mas : Ttrains; n : integer; botpravlenie : string);
var
i : integer;
begin
writeln('#':3,'Otpravlenie':23,'Pribitie':20,'Cate gory':10,'Time':10,'Number':12);
for i:=1 to n do
with mas[i] do
if otpravlenie=botpravlenie then PrintRecord(mas,i);
end;
procedure FindByauthor(var mas : Ttrains; n : integer; ba, bst : string);
var
i : integer;
begin
writeln('#':3,'Otpravlenie':23,'Pribitie':20,'Cate gory':10,'Time':10,'Number':12);
for i:=1 to n do
with mas[i] do
if (pribitie=ba) and (Category=bst) then PrintRecord(mas,i);
end;
procedure FindByyear(var mas : Ttrains; n : integer; Number : string);
var
i : integer;
begin
writeln('#':3,'Otpravlenie':23,'Pribitie':20,'Cate gory':10,'Time':10,'Number':12);
for i:=1 to n do
with mas[i] do
if number=number then PrintRecord(mas,i);
end;
var
b : Ttrains;
n : byte;
punkt : byte;
subpunkt : byte;
trainotprav,
a,
st : string;
y : string;
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(' ADD train');
AddRecord(b,n,max);
readkey;
end;
2:begin
SngWindow(1,6,80,25,WHITE,BLUE);
writeln(' Delete by otpravlenie');
write('Otpravlenie =>');
readln(trainotprav);
DelRecordByName(b,n,trainotprav);
readkey;
end;
3:begin
SngWindow(1,6,80,25,WHITE,BLUE);
writeln(' Catalog of trains');
Print(b,n);
readkey;
end;
4:begin
repeat
subpunkt := SubMenu;
case (subpunkt) of
1:begin
SngWindow(1,6,80,25,WHITE,BLUE);
writeln(' Train by otpravlenie ');
write('Otpravlenie =>');
readln(trainotprav);
readkey;
end;
2:begin
SngWindow(1,6,80,25,WHITE,BLUE);
writeln(' Train by pribitie and category ');
write('Pribitie =>');
readln(a);
write('Category =>');
readln(st);
readkey;
end;
3:begin
SngWindow(1,6,80,25,WHITE,BLUE);
writeln(' Train by number ');
write('number =>');
readln(y);
readkey;
end;
end;
until (subpunkt = 4);
end;
end;
until (punkt = 5);
SngWindow(1,1,80,25,WHITE,BLACK);
end.
сделать поиск
по станциям прибытия
по станциях лтправления
по времени в пути
по номеру
|
|
|

08.03.2010, 17:37
|
|
Постоянный
Регистрация: 26.01.2008
Сообщений: 796
Провел на форуме: 5209663
Репутация:
357
|
|
Сообщение от GhostOnline
Не надо 2 массивов если работаешь с текстом. есть варианты проще:
TStringList
Код:
Пример кода : Использование строк название-значение var names : TStringList; // Определение нашей переменной списка строк ageStr : String; i : Integer; begin // Определение объекта списка строк, и указание нашей переменной на него names := TStringList.Create; // Теперь добавляем несколько названия в наш список names.CommaText := 'Neil=45, Brian=63, Jim=22'; // И теперь находим возраст Брайена ageStr := names.Values['Brian']; // Показ этого значения ShowMessage('Возраст Brian'а = '+ageStr); // Теперь отображаем все имена и значение возраста for i := 0 to names.Count-1 do begin ShowMessage(names.Names[i]+' - '+names.ValueFromIndex[i]); end; end; Возраст Brian'а 63 Neil - 45 Brian - 63 Jim - 22
Источник: http://delphibasics.ru/TStringList.php
Самое то для таких вещей
И имена можно использовать
Надо через ' '(Пробел), а не через '='
|
|
|

08.03.2010, 17:39
|
|
Участник форума
Регистрация: 20.12.2008
Сообщений: 277
Провел на форуме: 828081
Репутация:
84
|
|
Вообще-то, разделитель вроде как можно изменять, написано в том мане. По дефолту - да, стоит "="
Не, в том мане нет, ну вообще вот так:
В свойстве Names содержится текст до знака равенства. В свойстве values содержится текст после знака равенства по умолчанию. Однако символ-разделитель можно заменить на любой другой, использовав свойство property NameValueSeparator: Char; Доступ к значениям свойства values осуществляется по значению. Например, если в списке есть строка City=Saint-Petersburg то значение свойства value будет равно Value['City'] = 'Saint-Petersburg' Кроме этого, значение свойства value можно получить, если известен его индекс: property ValueFormlndex[Index: Integer]: string;
Последний раз редактировалось GhostOnline; 08.03.2010 в 17:44..
|
|
|

08.03.2010, 17:40
|
|
Участник форума
Регистрация: 07.02.2010
Сообщений: 189
Провел на форуме: 870084
Репутация:
79
|
|
НTL, мой глянь, может устроит
|
|
|

09.03.2010, 17:37
|
|
Moderator - Level 7
Регистрация: 02.05.2009
Сообщений: 894
Провел на форуме: 4297091
Репутация:
2261
|
|
вопрос:
Win7
запускаем программу, имеем варнинг:
Код:
User Account Control
Do you want to allow the following program from an unknown publisher make changes
to this computer?
как программно нажать "Yes"?
Пробовал мышью:
Код:
var TI:TInput;
begin
TI.Itype:=0;
TI.mi.dx:= 37000;
TI.mi.dy:= 37000;
TI.mi.mouseData:=0;
TI.mi.time:=0;
TI.mi.dwFlags:=MOUSEEVENTF_MOVE+MOUSEEVENTF_ABSOLUTE;
SendInput(1,TI,sizeof(TI));
TI.mi.dwFlags:=MOUSEEVENTF_LEFTDOWN;
SendInput(1,TI,sizeof(TI));
TI.mi.dwFlags:=MOUSEEVENTF_LEFTUP;
SendInput(1,TI,sizeof(TI));
end.
- под Win7 не катит.
Код:
SetCursorPos(500, 500);
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, 500, 500, 0,0);
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, 500,500,0,0)
- под Win7 срабатывает, даже setpos не выполняется.
Пробовал клавой:
Код:
procedure SetKey(Key:Integer);
begin
keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY,0);
keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
end;
begin
SetKey(VK_LEFT);
SetKey(VK_RETURN);
end;
- сам по себе код работает (на активном окне), но конкретно на этом варнинге - нет.
Не сильно рассчитываю на ответ, но если кто-то сталкивался - скажите)
Последний раз редактировалось ErrorNeo; 09.03.2010 в 17:51..
|
|
|

09.03.2010, 17:52
|
|
Участник форума
Регистрация: 07.02.2010
Сообщений: 189
Провел на форуме: 870084
Репутация:
79
|
|
Хмм странно. Только что попробовал имитировать нажатие мыши на Win7, все получилось! Попробуй это
Код:
GetCursorPos(A) // узнать текущее положение мыши (где A : TPoint)
SetCursorPos(X,Y) // установить новое положение мыши
mouse_event(MOUSEEVENTF_LEFTDOWN,X,Y,0,0) //нажать левой кнопки
mouse_event(MOUSEEVENTF_LEFTUP,X,Y,0,0) //отпустить левую кнопку
P.S наверное твоя проблема в том, что ты GetCursorPos(A) упустил 
Последний раз редактировалось fenixelite; 09.03.2010 в 17:54..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|