Форум: "Потрепаться";
Текущий архив: 2003.04.24;
Скачать: [xml.tar.bz2];
ВнизПомогите осуществить сложную задачу... Найти похожие ветки
← →
Fiximil (2003-04-05 12:05) [0]1) Имеется "stroka" (string):
stroka:="december,october,january,september,nivember";
2) Имеется INI-файл с примерно таким содержанием:
[INI]
years=2001,2002,2003,2004
months=january,december,novermber,march,july
days=monday,tuesday,sunday,wednesday
time=hour,minute,second
И вот нужно по "strok"e" найти в INI-файле строку с максимальным сходством (в данном случае это будет "months") и затем название этой "категории" занести в "name" (string)
Т.е. что-то типа перебора получается....
Помогите пожалуйста осуществить. Плиззз!!!!!! Буду очень благодарен.
спасибо!
P.S. Почему модератора постоянно удаляет этот пост из "основного" форума???
← →
Song (2003-04-05 12:13) [1]Дык тут лучше не ini а обычный txt файл в TStringList загрузить, дальше For .. Do .. Pos() т.е. обычный парсинг.
← →
Fiximil (2003-04-05 12:15) [2]В том то и дело, что нужно всё это проделаывать с INI :(
Эх, блин......
← →
Song (2003-04-05 12:22) [3]Ну так открой ini файл в TStringList :)
ini - это ж обычный текстовый файл.
← →
Satirus (2003-04-05 15:35) [4]ну раз нужен .ини, тогда и пользуй его
var IniFile:TiniFile
а дальше по справке: создал, загрузил, прочитал, сравнил, закрыл, освободил
← →
Fiximil (2003-04-05 21:13) [5]Вся фишка в том, что сравнивение надо делать не по всей строке, а по словам, отделённых запятыми в "stroka". Т.е. если поле "months" в INI-файле будет такого знчения: "january,december,july", то "stroka" с таким значением: "december,july,january" должна быть похожа на значение "months", следовательно, "name" должно приянть значение "months"
Плиз, помогите с кодом!
← →
Song (2003-04-05 21:43) [6]ну так Pos(), For .. RTFM..
← →
Fiximil (2003-04-06 11:16) [7]Эх...ладно......ну не знаю я этого :(
← →
Fiximil (2003-04-06 17:17) [8]Кто-нить может помочь с кодом?????????
← →
Fiximil (2003-04-06 19:53) [9]:*(
← →
kaif (2003-04-06 21:33) [10]Что значит "максимальное сходство"?
Судя по задаче, нужно просто перебрать все слова из stroka и найти хоть одно из них хоть где-нибудь.
Или я что-то не так понял?
Для этого нужно сначала научиться дробить строку, разделенную запятыми, в отдельной функции.
Затем использовать эту функцию для сканирования stroka и
строк в ini-файле. Если ini-файл небольшой, я бы использовал TIniFile для такой цели. Там много методов обратиться к отдельным строкам ini.
← →
Fiximil (2003-04-06 22:56) [11]>kaif
Во-во..."максимальное сходство" я имел в виду схожество слов, разделённыз запятыми в "stroka" с какой-нибудь категорией в INI-File. И там, где эта "схожесть" больше, то название той группы и поставить в "name".
Блин, чувствую, хрен когда я это сделаю :(((
← →
panov (2003-04-07 00:26) [12]Вот функция, которая тебе поможет:
function CategoryFromIni(const aSec,aValue: String): String;
var
ini: TIniFile;
tLNames,tlValues,tmpList: TStringList;
index,i,j: integer;
begin
Result := "";
tLNames := TStringList.Create;
tLValues := TStringList.Create;
tmpList := TStringList.Create;
tmpList.Text := AnsiUpperCase(StringReplace(aValue,",",#13#10,[rfReplaceAll]));
ini := TIniFile.Create("F:\data\test\StrList\file.ini");
try
ini.ReadSection(aSec,tLNames);
for index := 0 to tLNames.Count-1 do
begin
tlValues.Text := AnsiUpperCase(StringReplace(ini.ReadString(aSec,tLNames[index],""),",",#13#10,[rfReplaceAll]));
for i := 0 to tmpList.Count-1 do
begin
for j := 0 to tLValues.Count-1 do
begin
if tmpList[i]=tLValues[j] then tLNames.Objects[index] := Pointer(Integer(tLNames.Objects[index])+1);
end;
end;
end;
i := 0;
for index := 0 to tLNames.Count-1 do
begin
if Integer(tLNames.Objects[index])>i then i := index;
end;
Result := tLNames[i];
finally
tLNames.Free;
tLValues.Free;
tmpList.Free;
ini.Free;
end;
end;
Вызов:
NameStrFromIni := CategoryFromIni("INI","december,october,january,september,november");
Содержимое файла file.ini:
[INI]
years=2001,2002,2003,2004
months=january,december,november,march,july
days=monday,tuesday,sunday,wednesday
time=hour,minute,second
А удалялись твои ветки потому, что в теме нужно писать тему сообщения.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.04.24;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c