ИМХО проще всего для каждой переменной создать свой стринглист и при выборе в ComboBox1 i-того элемента в эдиты выводить значения соответствующих строк.
делаешь объект obj, содержащий данные для Edit1 и Edit2 ComboBox1.Items.AddObject('http://www.ru',obj); //this is COOL
а ты однако мазохист, проще создать запись вида: Code: type PInfo = ^TInfo; TInfo = record Host: String; IP: String; Port: String; end; и заюзать TList, все компактно и удобно, а не куча переменных TStringList %)
alexey-m, xophet PHP: begin s:=TL.Strings[ComboBox1.ItemIndex]; Delete(s,1,pos(':',s)); edit1.text:=Copy(s,0,POS(':',s)-1); Delete(s,1,pos(':',s)); edit2.text:=Copy(s,0,length(s)); end; Не?
Зачем еще StringList.Работайте с теми данными которые вас просят обработать в данный момент. Code: Procedure TForm1.ComboBox1Click(Sender : TObject) Var s:string; begin s:=ComboBox1.Items[ComboBox1.ItemIndex]; //вот так Delete(s,1,pos(':',s)); edit1.text:=Copy(s,0,POS(':',s)-1); Delete(s,1,pos(':',s)); edit2.text:=Copy(s,0,length(s)); end;
Неа... или я читать не умею или ты не так изъясняешься, то что выше сказал, было к этому: ps. строки в delphi начинаются не с 0 индекса, а с 1
Вот набросал: Code: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TPrimeFRm1 = class(TForm) ComboBox1: TComboBox; Button1: TButton; Edit1: TEdit; Edit2: TEdit; Button2: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } public i:integer; { Public declarations } end; obj = class (TObject) private fHost,fPort:string; public property Host: string read fHost write fHost; property Port: string read fPort write fPort; constructor create; overload; end; var PrimeFRm1: TPrimeFRm1; implementation {$R *.dfm} constructor obj.create; begin inherited create; end; procedure TPrimeFRm1.Button1Click(Sender: TObject); //заполняем ComboBox var addtolist:obj; begin addtolist:=obj.create; addtolist.host:='172.18.16.'+inttostr(i); addtolist.port:='8080'; ComboBox1.AddItem('САЙТ '+inttostr(i),addtolist); inc(i); end; procedure TPrimeFRm1.FormCreate(Sender: TObject); begin i:=1; end; procedure TPrimeFRm1.Button2Click(Sender: TObject); //присваеваем EDIT'у значения полей obj'a begin //тут, к стати, неплохо было бы проверить (ComboBox1.Items.Objects[ComboBox1.ItemIndex] is obj) Edit1.Text:=(ComboBox1.Items.Objects[ComboBox1.ItemIndex] as obj).host; Edit2.Text:=(ComboBox1.Items.Objects[ComboBox1.ItemIndex] as obj).port; end; procedure FreeObjects(const strings: TStrings) ; //удаляет созданные нами obj'ы var idx : integer; begin for idx := 0 to Pred(strings.Count) do begin strings.Objects[idx].Free; strings.Objects[idx] := nil; end; end; procedure TPrimeFRm1.FormDestroy(Sender: TObject); //не забываем begin FreeObjects(ComboBox1.Items); end; end.
вопрос новичка: отличается ли исходный код, например, делфи 7 от кода делфи 2010? то есть будет ли работать исходник ранней версии в компиляторе более поздней версии?
как правило, исходники от ранних версий собираются без проблем в компиляторах поздних версий, чего нельзя сказать о обратном, тем более, если в коде используются фишки новых компиляторов типа: Inline, Generics и прочего
Мне нужно было из кодировки русских символов JSon сделать читабельные и понятные символы.Написал функцию JSonToRus: StrReplace -для удобной замены. Code: function StrReplace(const Str, Str1, Str2: string): string; var P, L: Integer; begin Result := str; L := Length(Str1); repeat P := Pos(Str1, Result); if P > 0 then begin Delete(Result, P, L); Insert(Str2, Result, P); end; until P = 0; end; JSonToRus - моя функция. Code: Function JSonToRus(str: string): string; Var js: array of array of string; i : integer; Begin SetLength(js,66,2); js[0][0]:= '\U0410'; js[0][1]:='А'; js[1][0]:= '\U0430'; js[1][1]:='a'; js[2][0]:= '\U0411'; js[2][1]:='Б'; js[3][0]:= '\U0431'; js[3][1]:='б'; js[4][0]:= '\U0412'; js[4][1]:='В'; js[5][0]:= '\U0432'; js[5][1]:='в'; js[6][0]:= '\U0413'; js[6][1]:='Г'; js[7][0]:= '\U0433'; js[7][1]:='г'; js[8][0]:= '\U0414'; js[8][1]:='Д'; js[9][0]:= '\U0434'; js[9][1]:='д'; js[10][0]:= '\U0415'; js[10][1]:='Е'; js[11][0]:= '\U0435'; js[11][1]:='е'; js[12][0]:= '\U0401'; js[12][1]:='Ё'; js[13][0]:= '\U0451'; js[13][1]:='ё'; js[14][0]:= '\U0416'; js[14][1]:='Ж'; js[15][0]:= '\U0436'; js[15][1]:='ж'; js[16][0]:= '\U0417'; js[16][1]:='З'; js[17][0]:= '\U0437'; js[17][1]:='з'; js[18][0]:= '\U0418'; js[18][1]:='И'; js[19][0]:= '\U0438'; js[19][1]:='и'; js[20][0]:= '\U0419'; js[20][1]:='Й'; js[21][0]:= '\U0439'; js[21][1]:='й'; js[22][0]:= '\U041A'; js[22][1]:='К'; js[23][0]:= '\U043A'; js[23][1]:='к'; js[24][0]:= '\U041B'; js[24][1]:='Л'; js[25][0]:= '\U043B'; js[25][1]:='л'; js[26][0]:= '\U041C'; js[26][1]:='М'; js[27][0]:= '\U043C'; js[27][1]:='м'; js[28][0]:= '\U041D'; js[28][1]:='Н'; js[29][0]:= '\U043D'; js[29][1]:='н'; js[30][0]:= '\U041E'; js[30][1]:='О'; js[31][0]:= '\U043E'; js[31][1]:='о'; js[32][0]:= '\U041F'; js[32][1]:='П'; js[33][0]:= '\U043F'; js[33][1]:='п'; js[34][0]:= '\U0420'; js[34][1]:='Р'; js[35][0]:= '\U0440'; js[35][1]:='р'; js[36][0]:= '\U0421'; js[36][1]:='С'; js[37][0]:= '\U0441'; js[37][1]:='с'; js[38][0]:= '\U0422'; js[38][1]:='Т'; js[39][0]:= '\U0442'; js[39][1]:='т'; js[40][0]:= '\U0423'; js[40][1]:='У'; js[41][0]:= '\U0443'; js[41][1]:='у'; js[42][0]:= '\U0424'; js[42][1]:='Ф'; js[43][0]:= '\U0444'; js[43][1]:='ф'; js[44][0]:= '\U0425'; js[44][1]:='Х'; js[45][0]:= '\U0445'; js[45][1]:='х'; js[46][0]:= '\U0426'; js[46][1]:='Ц'; js[47][0]:= '\U0446'; js[47][1]:='ц'; js[48][0]:= '\U0427'; js[48][1]:='Ч'; js[49][0]:= '\U0447'; js[49][1]:='ч'; js[50][0]:= '\U0428'; js[50][1]:='Ш'; js[51][0]:= '\U0448'; js[51][1]:='ш'; js[52][0]:= '\U0429'; js[52][1]:='Щ'; js[53][0]:= '\U0449'; js[53][1]:='щ'; js[54][0]:= '\U042A'; js[54][1]:='Ъ'; js[55][0]:= '\U044A'; js[55][1]:='ъ'; js[56][0]:= '\U042B'; js[56][1]:='Ы'; js[57][0]:= '\U044B'; js[57][1]:='ы'; js[58][0]:= '\U042C'; js[58][1]:='Ь'; js[59][0]:= '\U044C'; js[59][1]:='ь'; js[60][0]:= '\U042D'; js[60][1]:='Э'; js[61][0]:= '\U044D'; js[61][1]:='э'; js[62][0]:= '\U042E'; js[62][1]:='Ю'; js[63][0]:= '\U044E'; js[63][1]:='ю'; js[64][0]:= '\U042F'; js[64][1]:='Я'; js[65][0]:= '\U044F'; js[65][1]:='я'; For i:=0 to 65 do Begin // перебираем все символы и заменим их str:=StrReplace(str,LowerCase(js[i][0]),js[i][1]); // при помощи StrReplace end; Result:=str; End; Использовать : Code: Memo1.Text:=JSonToRus(s); Моя просьба уменьшить/оптимизировать мою версию преобразования русских символов Json.
Code: function GetUN(UniNum: string): string; var s : string; begin s := UniNum; Delete(s, 1, 2); s := Chr(StrToInt('$' + s) - 848); Result := s; end; function GetRus(UniText:string):string; var i: integer; s, w: string; begin s := UniText; if pos('\u', s) = 0 then begin Result := s; Exit; end; while pos('\u', s) > 0 do begin if pos('\u', s) = 1 then begin w := w + GetUn(Copy(s, pos('\u', s), 6)); Delete(s, pos('\u', s), 6); end else begin w := w + Copy(s, 1, 1); Delete(s, 1, 1); end; end; if Length(s) > 0 then w := w + s; Result := w; end; Использовать GetRus(string);
Как преобразовать в понятный текст? Code: яяяяf PM®ZiЉ.®0‘p.®0j`.®4jГ[Ъдеk+O*QЩMO*Qч2.®0jа_…Ѕmrј†+iЌІ»Eei‡ІВДi€PM®[i—ГHъгi‡>zХ‘„]^іoiЊВjЕai‡Г.Ґѓi‡І1.нi‘.®0j”БЩ i§Г6СУi€.(i‰U*ђi€SЮaЗjҐM2[°ђћ*$i‰В˜".i€WuЌ»i€Mуbзi±.®4jYmГPКiЋPM®ьiшOЏJi°.®4j¤>zХjOSЮaM‚МФtz'i€>zРLjFMЬґi‡XФЭ9i‡SЮsviђ.®0‘‚]ї„i€.4иьi‰Uиdi€^џzi€^ж#vi„ФL‡i‡MЬёЕ‘жmГPКiЉФtr#i™_Њi‡>zХj‚YЯ њi•.®0jbјxхЁj®[gќ†i’O*QД¶.®4jIOҐ?Ђi–]ќиUiЊ[ЪеМjTІьlli‘m?№OiЌVnµ—i‘.®0jа.(/i–O*QуPM®ыiфmГ В FAQ написано: Code: Reply format The reply always starts with FF FF FF FF 66 0A. The format is then a series of these server address blocks: [B]Byte[/B] First octet of IP address [B]Byte[/B] Second octet of IP address [B]Byte[/B] Third octet of IP address [B]Byte[/B] Fourth octet of IP address [B]Unsigned Short[/B] Port number - usually 27015 (69 87) - this is network ordered, which is unlike every other Steam protocol. http://developer.valvesoftware.com/wiki/Master_Server_Query_Protocol
Нужна помощь с паскалем. имеется программа Code: program menu; uses crt, graph; const n=5; x1=-6; x2=6; var a:array[1..n,1..n] of integer; b:array[1..n,1..n] of integer; gd, gm: integer; x,y:real; max,i,j,min,a1,b1:integer; m:array [1..n,1..n] of integer; mx,my,p,o,dx,w:real; Driver,Mode:integer; Color:word; x0,y0:word; s2,s1:string; xg,yg:word; size,d,z:word; type strmenu=record z:integer; s:string[14]; end; Const kol=5; mas:array[1..kol] of strmenu= ((z:6; s:'Vvod Dannyx'), (z:20; s:'Sortirovka'), (z:35; s:'Graphik'), (z:50; s:'Vyvod dannyx'), (z:63; s:'Exit')); Var e:integer; k:integer; ch:char; procedure InputDan; begin clrscr; randomize; for i:=1 to n do for j:=1 to n do begin writeln('vvedite element ',i,' stroki ',j,' stolbca '); readln(a[i,j]); end; for i:=1 to n do for j:=1 to n do b[j,n+1-i]:=a[i,j]; end; procedure SortDan; begin { clrscr; write(m[i,j]); for i:=1 to n-1 do begin for j:=1 to n-i do if m[3,j]>=m[3,j+1] then begin min:=m[3,j];m[3,j]:=m[3,j+1];m[3,j+1]:=min; end; for j:=1 to n do write(m[3,j],' '); readln(m[i,j]); end;} end; procedure GraphFun; begin Clrscr; Writeln('Postroit graphik y=cos2x-sinx'); xg:=0; yg:=0; DRiver:=VGA; Mode:=VGAHi; InitGraph(DRiver,Mode,'‘:\'); if GraphResult<>grok then begin writeln('Oshibka pri vkluchenii'); writeln('Graphicheskogo regima'); Halt; end; x0:=140; y0:=(GetMaxY div 2)+40; setBkColor(7); setColor(white); ClearDevice; Line(x0,40,x0,GetMaxY-40); Line(x0-100,y0,GetMaxX-40,Y0); MoveTo(x0,y0); Size:=1; settextstyle(0,0,size); outtextxy(x0-2,y0+5,'0'); outtextxy((getmaxx div 2)-40,y0-100,'y=cos(x)*cos(x)-sin(x)'); outtextxy(getmaxx-80,y0+5,'x'); outtextxy(x0-10,80,'y'); For d:=1 to 3 do Line(x0+20*i,y0-3,x0+20*i,y0); outtextxy(x0+20,y0+5,'1'); outtextxy(x0+63,y0+5,'3'); Line(x0-20,y0-3,x0-20,y0); outtextxy(x0-25,y0+5,'-1'); Line(x0,y0+20,x0+3,y0+20); outtextxy(x0-13,y0+20,'-1'); setColor(red); x:=-6; y:=cos(x)*cos(x)-sin(x); xg:=x0+round(x*20); yg:=y0-round(y*20); MoveTo(xg,yg); for d:=1 to 180 do begin x:=-6+0.1*d; y:=cos(x)*cos(x)-sin(x); xg:=x0+round(x*20); yg:=y0-round(y*20); LineTo(xg,yg); end; Readln; CloseGraph; end; procedure OutputDan; begin clrscr; for i:=1 to n do for j:=1 to n do b[j,n+1-i]:=a[i,j]; writeln; writeln('ishodniy massiv:'); for i:=1 to n do begin for j:=1 to n do write(a[i,j]:5); writeln; end; writeln; writeln('rezultat:'); for i:=1 to n do begin for j:=1 to n do write(b[i,j]:5); writeln; end; max:=m[1,1]; for i:=2 to n do if (max<m[i,i]) and (m[i,i] mod 2 =0) then max:=m[i,i]; writeln('maximalniy element glavnoy diagonali =',max); readln(m[i,i]); end; begin k:=1; repeat textattr:=7; clrscr; for e:=1 to kol do begin gotoxy(mas[e].z,3); write(mas[e].s); end; textattr:=87; gotoxy(mas[k].z,3); write(mas[k].s); ch:=readkey; case ch of #13:case k of 1:inputDan; 2:SortDan; 3:Graphfun; 4:OutputDan; end; #0:begin ch:=readkey; case ch of #77: if k<kol then k:=k+1 else k:=1; #75: if k>1 then k:=k-1 else k:=kol; end; end; end; until(ch=#13)and(k=5)or(ch=#27); textattr:=7; begin clrscr; end; end. Есть несколько заданий, некоторые задания в этой программе не работают, я почему то не могу правильно вставить готовые программы в это меню. Вот задания: 1. Повернуть матрицу на 90 градусов по часовой стрелке (работает) 2. Найти максимальный четный элемент на главной диагонали матрицы (не работает) 3. Выполнить сортировку элементов 3-ей строки матрицы М по возрастанию ( не работает) 4. график (работает) Вот программы без меню. Code: const n:=5; var a:array[1..n,1..n] of integer; var b:array[1..n,1..n] of integer; max,i,j,min,a1,b1:integer; begin {часть 1} for i:=1 to n do for j:=1 to n do begin writeln('Введите элемент ',i', строки ',j,' столбца '); readln(a[i,j]); end; for i:=1 to n do for j:=1 to n do b[j,n+1-i]:=a[i,j]; writeln; writeln('исходный массив:'); for i:=1 to n do begin for j:=1 to n do write(a[i,j]:5); writeln; end; writeln; writeln('результат:'); for i:=1 to n do begin for j:=1 to n do write(b[i,j]:5); writeln; end; {часть 2} for i:=1 to n do for j:=1 to n do begin write('Введите элемент ',i,' строки ',j,' столбца: '); readln(m[i,j]; end; writeln; writeln('исходный массив:'); for i:=1 to n do begin for j:=1 to n do write(m[i,j]:5); writeln; end; max:m[1,1]; for i:=2 to n do if (max<m[i,i]) and (m[i,i] mod 2 =0) then max:=[i,i]; writeln('Максимальный элемент главной диагонали=',max); {часть 3} for i:=1 to n-1 do begin for j:=1 to n-i do if m[3,j>=m[3,j+1] then begin min:=m[3,j];m[3,j]:m[3,j]:m[3,j+1];m[3,j+1]:min;end ; end; for j:=1 to n do write(m[3,j],' '); readln; end. Помогите, чтобы в меню они работали. Буду очень признателен! и еще хотелось бы видеть в процедуре ввода: был дан выбор 1. ввод ручной (после чего начнется ввод чисел) 2. ввод автоматический (после чего выведет сообщение "данные успешно введены") В выводе, если данные не были введены, т.е раннее не открывался пункт ввод, должна будет появится ошибка "Данные не введены"
Спасибо. Пробовала вместо 1 поставить 27. Т.к. нашла это в инет. Софтина ругалась. Потом изменила на VK_ESCAPE и норм стало. Терь вот какой вопрос появился. Есть софт который каждую минуту подключается к определенному серверу по логину и паролю. Так вот как реализоваться чтобы можно было запустить тока 1 копию программы с логином и паролем. То есть если кто-то захочет запустить программу с этим логином и паролем на другой машине когда первая уже залоснились у него ничего не вышло чтобы.Я так понимаю надо копать в сторону сессий на php. Но как реализацию сделать в Delphi?