Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.07;
Скачать: CL | DM;

Вниз

разбивка строки на слова   Найти похожие ветки 

 
denis24   (2004-10-22 09:41) [0]

В сабже использую строку с эдита.Смотрю в дебугере ,там идет строка "1,2,3"
В цикле
while i<=Length(t)+1 do
   begin
   c:=t[i];
       .
       .
       .
Первый символ этой строки "#0".Почему?


 
Johnmen ©   (2004-10-22 09:56) [1]

Потому, что
1. Надо читать внимательно хелп. По string.
2. Надо задавать вопросы, не приводя общипанный кусок кода, а реальный полны код.


 
denis24   (2004-10-22 10:31) [2]

StringToWords(edit1.Text),Words);

procedure StringToWords(const T:String;const List:Tstrings=nil);
var
i:integer;
s:string;
c:Char;
begin              
i:=0;
s:="";
if t>"" then
 begin
 while i<=Length(t)+1 do
   begin
   c:=t[i];
         if c<>","  then s:=s+c
         else  then Check;

   i:=i+1;
   end;
 end;
end;

procedure Check();
begin
if (s<>"") then
begin
       if List<>nil then List.Add(S);
end;

s:="";
end;


 
П7   (2004-10-22 10:38) [3]

i := 1;

Символы в строке начитаются с 1 индекса...


 
Rem ©   (2004-10-22 10:38) [4]

procedure StringToWords(const T: string; const List: TStrings = nil);
begin
 if Assigned(List) then
 begin
   List.Delimiter := ",";
   List.DelimitedText := T;
 end;
end;


 
П7   (2004-10-22 10:42) [5]

Я использую вот такую не хитрую функцию, которая не зависит от всяких там левых модулей. Не быстро, но для моих целей очень удобно, каждый раз возвращает один кусок ДО разделителя и обрезает в основном тексте этот кусок и разделитель.

function SplitString( sub : string; var str : string ) : string;
var
 res : string;
 cnt : integer;
 sl : integer;
begin
 cnt := Pos( sub, str );
 sl := Length( sub );
 if cnt > 0 then
 begin
   if sl > 1 then
     res := "";
   res := copy( str, 1, cnt - sl );
   str := copy( str, cnt + sl, Length( str ) - ( cnt - sl - 1) );
 end
 else
 begin
   res := str;
   str := "";
 end;
 Result := res;
end;


 
denis24   (2004-10-22 11:07) [6]

Спасибо  to REM
Еще вопрос.Как организовать удаление повторяющихся значений в заполняемом таким образом srtingList.


 
Symb   (2004-10-22 11:28) [7]

В StringList не нужно ничего удалять. Просто перед заполнением у него надо выставить свойство Sorted в true, а Duplicates в dupIgnore. Тогда дублирующиеся строки он просто не будет добавлять.


 
denis24   (2004-10-24 17:02) [8]

Почему если я делаю сабж
procedure StringToWords(const T: string; const List: TStringlist = nil);
begin
if Assigned(List) then
begin

  List.Delimiter := ";";
  List.DelimitedText := T;

end;
end;
Мне побел между словами тоже воспринимает за символ-разделитель и соответственно разделяет на слова?


 
Yuri-7   (2004-10-24 23:20) [9]

strings.CommaText:=Edit1.Text; и в Strings - все слова.


 
ЮЮ ©   (2004-10-25 03:41) [10]

потому что " " является вторым Delimiter-ом в коде
procedure TStrings.SetDelimitedText(const Value: string);

while (P^ > " ") and (P^ <> Delimiter) do
 {$IFDEF MSWINDOWS}
   P := CharNext(P);
 {$ELSE}
   Inc(P);
 {$ENDIF}
SetString(S, P1, P - P1);

т.е. "нарвавшись" на пробел мы, похоже, получаем новый элемент в списке



Страницы: 1 вся ветка

Текущий архив: 2004.11.07;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.027 c
1-1098644589
S-Lok
2004-10-24 23:03
2004.11.07
Использование dll в html-файле


9-1089372152
Sewix
2004-07-09 15:22
2004.11.07
Требуется написать лаберинт. Типа Doom a без монстров


3-1097081408
suharew
2004-10-06 20:50
2004.11.07
Как запихнуть картинку в БД


9-1089442145
1@@@@@1
2004-07-10 10:49
2004.11.07
Collision не работает


1-1098439910
JaoDa
2004-10-22 14:11
2004.11.07
Можно ли вытащить версию exe файла?





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