Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.48 MB
Время: 0.009 c
3-76863
Внук
2003-04-05 14:50
2003.04.24
Максимальное количество сессий в Oracle


3-76765
Aleksandr
2003-04-08 15:05
2003.04.24
Есть ли альтернативные способы сброса таблицы MSSQL в Paradox?


1-76991
Giemgo
2003-04-13 00:25
2003.04.24
Не пойму где разместить initialization и finalization


14-77129
JorSand
2003-04-03 23:23
2003.04.24
Посоветуйте, Как можно защитить свою прогу?


1-76970
race1
2003-04-13 09:34
2003.04.24
Странное поведение памяти ( кушание больше меры )





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский