Форум: "Начинающим";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
ВнизКак вставить содержимое перeменной string в код программы? Найти похожие ветки
← →
pathfinder (2005-11-08 20:11) [0]Подскажите пожалуйста.
← →
Zeqfreed © (2005-11-08 20:16) [1]pathfinder (08.11.05 20:11)
А откуда берется переменная string? И в код какой программы вставить?
← →
umbra © (2005-11-08 20:19) [2]2 pathfinder (08.11.05 20:11)
клавиатура поможет в этом нелегком испытании
← →
pathfinder (2005-11-08 20:23) [3]
> Zeqfreed ©
Есть такая штука:
if (Pos(S_FAM,S2)<>0) and (Pos(S_NAM,S2)<>0) and (Pos(S_SUR,S2)<>0) and
(Pos(S_DT,S2)<>0) and (Pos(S_DS,S2)<>0) and (Pos(S_DN,S2)<>0) and
(Pos(S_DD,S2)<>0) and (Pos(S_DO,S2)<>0) and (Pos(S_AD,S2)<>0) and
(Pos(S_DR,S2)<>0)
и наличие каждого условия должно определятся чекбоксом.
Вот я и подумал сделать это через переменную string и как-то использовать ее в условиях для if.
← →
Virgo_Style © (2005-11-08 20:25) [4]D6 и 2000 - вроде бы компиляторы, а не интерпретаторы...
← →
pathfinder (2005-11-08 20:38) [5]Как же быть?:(
← →
umbra © (2005-11-08 20:45) [6]2 pathfinder (08.11.05 20:38) [5]
задавать внятные вопросы и давать завершенные фрагменты кода
← →
Джо © (2005-11-08 20:48) [7]
> [4] Virgo_Style © (08.11.05 20:25)
> D6 и 2000 -
Одна из этих двоих, вообще-то, не компилятор, а операционная система ;P
← →
pathfinder (2005-11-08 20:55) [8]Есть 2 текст. файла с записями вида
Фамилия^Имя^Отчество и т.д.
Программа сравнивает файлы на предмет записей с совпадающими параметрами(Фам, Имя, Отч..) и удаляет во втором файле идентичные записи. Хотелось бы задавать параметры по которым производится сравнение чекбоксами. Как это можно сделать?
Заранее всем спасибо.
begin
St1.LoadFromFile(opendialog1.FileName);
St2.LoadFromFile(opendialog2.FileName);
c:=0;
memL.Lines.Clear;
for y:=0 to St1.Count-1 do
begin
S:=St1.strings[y];
S_PR:=S;
S_FAM:=trim(copy(s,1,pos("^",s)-1));
delete(s,1,pos("^",s));
S_NAM:=trim(copy(s,1,pos("^",s)-1));
delete(s,1,pos("^",s));
S_SUR:=trim(copy(s,1,pos("^",s)-1));
delete(s,1,pos("^",s));
S_DT:=trim(copy(s,1,pos("^",s)-1));
delete(s,1,pos("^",s));
S_DS:=trim(copy(s,1,pos("^",s)-1));
delete(s,1,pos("^",s));
S_DN:=trim(copy(s,1,pos("^",s)-1));
delete(s,1,pos("^",s));
S_DD:=trim(copy(s,1,pos("^",s)-1));
delete(s,1,pos("^",s));
S_DO:=trim(copy(s,1,pos("^",s)-1));
delete(s,1,pos("^",s));
S_AD:=trim(copy(s,1,pos("^",s)-1));
delete(s,1,pos("^",s));
S_DR:=trim(copy(s,1,length(s)));
for z:=0 to St2.Count-1 do
begin
S2:=St2.Strings[z];
if (Pos(S_FAM,S2)<>0) and (Pos(S_NAM,S2)<>0) and (Pos(S_SUR,S2)<>0) and
(Pos(S_DT,S2)<>0) and (Pos(S_DS,S2)<>0) and (Pos(S_DN,S2)<>0) and
(Pos(S_DD,S2)<>0) and (Pos(S_DO,S2)<>0) and (Pos(S_AD,S2)<>0) and
(Pos(S_DR,S2)<>0)
then
begin
memL.Lines.Add("Файл 1. Строка "+Inttostr(y+1)+": "+S_PR);
memL.Lines.Add("Файл 2. Строка "+Inttostr(z+1)+": "+S2);
memL.Lines.Add("");
St2.Strings[z]:="";
c:=c+1;
end;
end;
end;
i := 0;
while i < St2.Count do
if St2.Strings[i] = "" then
St2.Delete(i)
else
inc(i);
if c=0 then memL.Lines.add("Повторов не обнаружено.")
else
begin
memL.Lines.add("Найдено "+inttostr(c)+" повторов.");
St2.SaveToFile(Extractfilepath(application.ExeName)+"Out\"+extractfilename(opendialog2.FileName));
end;
end;
← →
Zeqfreed © (2005-11-08 21:09) [9]pathfinder (08.11.05 20:23) [3]
type
TForm1 = class(TForm)
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
Button1: TButton;
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
procedure CheckBoxesClick(Sender: TObject);
public
{ Public declarations }
end;
const
ConditionsAmount = 3;
var
Form1: TForm1;
substrings : array[1..ConditionsAmount] of String = ("Подстрока 1", "Подстрока 2", "Подстрока 3");
activity : array[1..ConditionsAmount] of Boolean = (false, false, false);
implementation
{$R *.dfm}
procedure TForm1.CheckBoxesClick(Sender: TObject);
begin
if (Sender is TCheckBox) and ((Sender as TCheckBox).Tag in [1..ConditionsAmount]) then
activity[(Sender as TCheckBox).Tag] := (Sender as TCheckBox).Checked;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
CheckBox1.Checked := activity[1];
CheckBox2.Checked := activity[2];
CheckBox3.Checked := activity[3];
CheckBox1.Tag := 1;
CheckBox2.Tag := 2;
CheckBox3.Tag := 3;
CheckBox1.OnClick := CheckBoxesClick;
CheckBox2.OnClick := CheckBoxesClick;
CheckBox3.OnClick := CheckBoxesClick;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
b : Boolean;
inactive : Integer;
begin
b := true;
inactive := 0;
for i := 1 to ConditionsAmount do begin
if activity[i] then
b := b and (Pos(substrings[i], Edit1.Text) <> 0)
else
Inc(inactive);
end;
if inactive < ConditionsAmount then begin
if b then ShowMessage("Everything is OK");
end else
ShowMessage("At least one condition should be enabled");
end;
Думай в этом ключе :)
← →
pathfinder (2005-11-08 21:17) [10]
> Zeqfreed © (08.11.05 21:09) [9]
Спасибо. Постараюсь..не думал, что это так сложно:(
← →
umbra © (2005-11-08 21:21) [11]
> не думал, что это так сложно:(
основная сложность - привести в соответствие отмеченные чекбоксы и номера полей в записях, а затем извлечь из строк эти поля, чтобы передать их в функциюPos
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.012 c