Mam taki problem ponieważ robię program który wyszukuje wiersz z ciągiem znaków i chodzi o to że wstawiam komponent RichEdit i w tym komponencie umieszczam ciąg lilczb na przykład:
12, 15, 20, 25, 30
15, 20, 30, 40, 50
16, 18, 25, 35, 40
Następnie wstawiam komponent TEdit i i komponent TButton i do komponentu TEdit wpisuję liczby które mają być wyszukane na przykład:
15, 30, 50
i program nie ma problemu z wyszukaniem tych liczb ale gdy wpiszę na przykład:
15, 30, 45
to program nie wyszukuje wiersza z ciągiem znaków a zależy mi na tym żeby wyszukał wiersz w którym znajdują się tylko te dwie liczby czyli 15 i 30 nawet wtedy gdy do komponentu TEdit
jest wpisane 15, 30, 45.
A o to jest kod mojego programu:
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
int SearchNumbers(TStrings *List, String Text)
{
Text += ",";
vector<String> Numbers;
int p = -1;
do
{
p = Text.Pos(",");
if(p == 0) break;
String sSeg = Text.SubString(1, p - 1).Trim();
if(!sSeg.IsEmpty()) Numbers.push_back(sSeg);
Text = Text.Delete(1, p + 1);
}while(p > 0);
int nCount = Numbers.size(), lCount = List->Count;
int l = 0;
do
{
p = 0;
String sLine = List->Strings[l];
for(int n = 0; n < nCount; n++)
{
String searchNumber = Numbers[n];
int s = sLine.Pos(searchNumber);
if(s > 0) p++; else break;
if(p == nCount) return l;
}
l++;
}while(l < lCount);
return -1;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
{
int index = SearchNumbers(RichEdit1->Lines, Edit2->Text);
if(index < 0) ShowMessage("Niczego nie znaleziono");
else
{
RichEdit1->SelStart = RichEdit1->Perform(EM_LINEINDEX, index, 0);
RichEdit1->SelLength = RichEdit1->Lines->Strings[index].Length();
RichEdit1->Perform(EM_SCROLLCARET, 0, 0);
RichEdit1->SetFocus();
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Otwrz1Click(TObject *Sender)
{
if (OpenDialog1->Execute())
RichEdit1->Lines->LoadFromFile(OpenDialog1->FileName);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Zapisz1Click(TObject *Sender)
{
if (SaveDialog1->Execute())
RichEdit1->Lines->SaveToFile(SaveDialog1->FileName);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Wklej1Click(TObject *Sender)
{
RichEdit1->PasteFromClipboard();
}
Serdecznie proszę o pomoc.





