Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.08.2014, 09:57   #51
Uliy
Пользователь
 
Регистрация: 24.07.2014
Сообщений: 38
По умолчанию

http://www.programmersforum.ru/attac...1&d=1409205439

все равно не выходит даже так
Вложения
Тип файла: rar Копия Konvertor.rar (207.6 Кб, 9 просмотров)
Uliy вне форума Ответить с цитированием
Старый 28.08.2014, 10:50   #52
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

для проверки нужен файл исходный текстовый файл. http://programmersforum.ru/showpost....3&postcount=23тот который слева открыт в блокноте.
Навскидку там НЕТ
Цитата:
Код:
   Xml.Add ('       <seg>'+ GetFieldName(strok, 'name') +'</seg>');  //поле name_ru
   Xml.Add ('     </tuv>');
   Xml.Add ('     <tuv xml:lang="RU-RU">');
   Xml.Add ('       <seg>'+GetFieldName(strok, 'name_fr')+ '</seg>'); //из поля name_en
   Xml.Add ('     </tuv>');
   Xml.Add (' </tu>');
   Xml.Add (' <tu creationdate="20140819T140109Z"creationid="NICI">');
   Xml.Add ('     <tuv xml:lang="RU-EN" >');
   Xml.Add ('       <seg>'+GetFieldName(strok, 'Ab1_ru')+ '</seg>');  //из поля Ab1_en
   Xml.Add ('     </tuv>');
   Xml.Add ('     <tuv xml:lang="RU-RU">');
   Xml.Add ('       <seg>'+GetFieldName(strok, 'Ab1_en_en')+'</seg>');  //из поля Ab1_ru
1. сравнение строк чувствительно к регистру(строчные|прописные).
'Name_fr'<>'name_fr'
поэтому либо писать имена строго соблюдая строчная/прописная 'Name_fr'
либо приводить к одному регистру и потом сравнивать
LowerCase(copy(s,1,...)) =LowerCase(name)

Код:
function TForm1.GetfieldName(strl: TStringList; name: string): string;
var
  s: string;
  i: integer;
begin
  //result:='';
  for i:=0 to strl.count-1 do begin
    s:=strl.ValueFromIndex[i];
    if LowerCase(copy(s,1,6))=LowerCase(name) then  //нужная строка по имени
     result:=copy(s,7,length(s)); //копируется нужный фрагмент из этой строки 
  end;
  
//////////////////////////
  //этого можно конечно и не делать но будет удобнее понимать что именно идет не так
  if result='' then begin //если мы не найдем чего-то 
    SHOWMESSAGE(format('ВНИМАНИЕ! поле "%s" НЕ НАЙДЕНО!',[name]));//привлечем внимание
    Memo2.Add(format('поле "%s" НЕ НАЙДЕНО!',[name]);//запишем это в лог 
  end;
/////////////////////////Можно оставить только тот вариант который покажется удобнее
// ShowMessage -после каждой 'ошибки'  придется нажимать на кнопку

end;
P.S. 'Ab10_en' имеет другую длину (количество символов) поэтому НЕ БУДЕТ найдено
Код:
if LowerCase(copy(s,1,6))=LowerCase(name) then  //нужная строка по имени
если хотм сравнивать(искать) строки различной длины то смотри ранее.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 28.08.2014 в 11:01.
evg_m вне форума Ответить с цитированием
Старый 28.08.2014, 10:58   #53
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
сравнение строк чувствительно к регистру(строчные|прописные)
AnsiSameText, AnsiCompareText, SameText, CompareText - удобное регистронечувствительное сравнение
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 28.08.2014 в 11:00.
Аватар вне форума Ответить с цитированием
Старый 28.08.2014, 11:05   #54
Uliy
Пользователь
 
Регистрация: 24.07.2014
Сообщений: 38
По умолчанию

вот файл формата txt
http://www.fayloobmennik.net/4062341
пароль: 12345
Uliy вне форума Ответить с цитированием
Старый 28.08.2014, 11:08   #55
Uliy
Пользователь
 
Регистрация: 24.07.2014
Сообщений: 38
По умолчанию

Т.е. Вы редлогаете использовать вместо GetFieldName использовать одну из этих AnsiSameText, AnsiCompareText, SameText, CompareText


А для поиска определенной строки использовать
if LowerCase(copy(s,1,6))=LowerCase(na me) then
Uliy вне форума Ответить с цитированием
Старый 28.08.2014, 11:26   #56
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Т.е. Вы редлогаете использовать вместо GetFieldName использовать одну из этих AnsiSameText, AnsiCompareText, SameText, CompareText
Нет, использовать их для поиска определенной строки.

Код:
if CompareText(s, name)=0 then  // ЭТО ТОЛЬКО ПРИМЕР но не рабочий код!!
за подробностями можно в справку (F1) а можно сюда (ссылка вверху страницы Основы Delphi
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 28.08.2014, 14:57   #57
Uliy
Пользователь
 
Регистрация: 24.07.2014
Сообщений: 38
По умолчанию

Окей, попробую так
Uliy вне форума Ответить с цитированием
Старый 01.09.2014, 17:45   #58
Uliy
Пользователь
 
Регистрация: 24.07.2014
Сообщений: 38
По умолчанию

Решила сделать подругому, чтобы можно было отследить как все работает.
С помощью кнопки "Создание документа" я открываю в Мемо необходимый файл, затем с помощью кнопки Button5 пытаюсь скопировать текст, но получается его копировать только полностью а частично не выходит

Код:
procedure TForm1.Button5Click(Sender: TObject);
const DelSym = ' Name, Ab_';
var Text: string; i: integer;
s: string;
strl: TStringList;
begin
  Text:=Memo2.Lines.Text;
  for i := 1 to Length(Text) do
    if Pos(Text[i],DelSym) > 0 then
      Text[i]:=',';
 { for i:=0 to strl.count-1 do begin
    s:=strl.ValueFromIndex[i];  }
  Memo1.Text:=Text;
  //end;
end;
как быть, теми способами которые Вы писали у меня не получаются(в коде там есть закоментированные строчки то как пыталась)?
http://www.programmersforum.ru/attac...1&d=1409579071



________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.
Вложения
Тип файла: rar Копия Konvertor.rar (208.5 Кб, 7 просмотров)

Последний раз редактировалось Serge_Bliznykov; 01.09.2014 в 19:45.
Uliy вне форума Ответить с цитированием
Старый 02.09.2014, 10:01   #59
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
if copy(s,1,4)=name then //нужная строка по имени
что бы взять и потом сравнивать нужное число символов (ровно столько сколько есть в переменной(параметре) name)
Код:
if copy(s,1, length(name)) =name
Цитата:
// if (CompareStr(copy(s,0,6), 'name_en')=0) then
нумерация строки начинается с 1
// if (CompareStr(copy(s,1,length(name){смотри выше}), 'name_en')=0) then
//ShowMessage(s(7));
Цитата:
//LowerCase(copy(s,1,7)):= LowerCase('name_ru');
ну зачем здесь двоеточие(.

Цитата:
затем с помощью кнопки Button5 пытаюсь скопировать текст,
Код:
  for i := 1 to Length(Text) do
    if Pos(Text[i],DelSym) > 0 then
      Text[i]:=',';
то что здесь написано это
Код:
  for i := 1 to Length(Text) do // перебрать все символы из text
    if Pos(Text[i],DelSym) > 0 then //если этот символ(text[i]) найдется в заданной строке(DelSym)
      Text[i]:=','; //заменить его на запятую(,)
------------
// В строке Text все символы равные одному из следующих символов ' ','N','a','m','e',',',' ','A','b','_' заменить на ',' (запятую).
Код:
k:=Pos(delsym, text); // НАЙТИ указанную строку(DelSym) в строке Text и запомнить ее положение (k:=).
if k>0 then begin //если мы ее нашли
  А что мы хотим здесь делать  ?????
end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 02.09.2014, 10:20   #60
Uliy
Пользователь
 
Регистрация: 24.07.2014
Сообщений: 38
По умолчанию

evg_m
Мне надо попорядку вставить отдельно каждую строку взятую из txt в созданный tmx документ

щас попробую сделать то что Вы объяснили
Uliy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
pdf конвертор VAnj2607 Помощь студентам 6 01.05.2011 16:55
создать конвертор nurgali Помощь студентам 0 09.12.2010 09:57
Конвертор ZORRO2005 Microsoft Office Excel 16 26.05.2008 10:50
Конвертор Djarx БД в Delphi 14 27.04.2008 17:04
Конвертор IB в FB SunKnight БД в Delphi 1 29.03.2008 20:10