Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.014 c
1-1130923212
СергейА
2005-11-02 12:20
2005.11.27
Как поменять кодовую страницу в текстовом файле на 866? Спасибо!


14-1131294508
Карелин Артем
2005-11-06 19:28
2005.11.27
Угнали аську 7-значную.


2-1131740926
wen
2005-11-11 23:28
2005.11.27
поиск Tstringlist и нагрузка на проц


4-1127835237
Grief
2005-09-27 19:33
2005.11.27
ошибка с GetDIBits при глубине цвета менее 9 бит.


2-1131306176
ruslan.q
2005-11-06 22:42
2005.11.27
E-mail





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский