Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];

Вниз

Из TStrings в String (и обратно), при помощи разделителя.   Найти похожие ветки 

 
rolex   (2005-08-08 14:02) [0]

У меня уже есть готовые функции, но там используется разделитель запятая (",").
Я хочу переделать, чтобы разделитель был не "," а "&$".
Вот бывшие функции (где разделитель ","):

function GetList(S : String):TStrings;
var
   iPosComma : integer;
   sTmp : string;
   tlist:TStrings;
begin
try
tlist:=TStringList.Create;
tlist.Clear;
s := trim(s);
while pos(",",s) > 0 do
   Begin
   iPosComma := pos(",",s);
   sTmp := copy(s,1,iPosComma - 1);
   tlist.Add(sTmp);
   s := copy(s,iPosComma + 1,Length(s));
   End;
if length(s) <> 0 then tlist.Add(s);
except
on E : Exception do
   ShowMessage(E.Message);
end;
result:=tlist;
End;

Function GetString(tlist:TStrings):String;
var i:integer; S:String;
Begin
if tlist.Count<>0 then
begin
s:=tlist.Strings[0];
for i:=1 to tlist.Count-1 do s:=s+","+tlist.Strings[i];
result:=s; end else result:="";
End;


Как переделать функцию GetString я знаю, там достаточно поменять в одном месте "," на "&$".
А как переделать GetList(S:String):TStrings; я незнаю. Прошу помочь.


 
IceBeerg ©   (2005-08-08 14:14) [1]

А while pos("&$",s) > 0 do
  Begin
  iPosComma := pos("&$",s);
пробовал?


 
alex-drob ©   (2005-08-08 14:16) [2]


> IceBeerg ©   (08.08.05 14:14) [1]


и s := copy(s,iPosComma + 1,Length(s));
на s := copy(s,iPosComma + 2,Length(s));


 
rolex   (2005-08-08 14:18) [3]

Всем Спасибо. Сам разобрался. Даже не думал, что всё так просто.


 
IceBeerg ©   (2005-08-08 14:18) [4]

alex-drob ©   (08.08.05 14:16) [2]
Да, не до смотрел...


 
rolex   (2005-08-08 14:20) [5]

Также сделал. Только почти методом тыка.
Блин, откуда у вас такая логика?!


 
BFG9k ©   (2005-08-08 14:41) [6]

TStrings.Delimiter и TStrings.DelimitedText чем не подошли ?


 
Slym ©   (2005-08-08 14:46) [7]

Удалено модератором
Примечание: Не в подворотне


 
rolex   (2005-08-08 15:09) [8]


> BFG9k ©   (08.08.05 14:41) [6]
> TStrings.Delimiter и TStrings.DelimitedText чем не подошли
> ?

Незнал про существование таких. щас буду смотреть.


 
rolex   (2005-08-08 15:19) [9]

Посмотрел. Не катит. Нету обратного (String to TStrings), и разделитель должен быть из одного символа.


 
Slym ©   (2005-08-08 15:26) [10]

str:=StringReplace(str,"&$",#13#10,rfReplaceAll);
Strings.Text:=str;

И обратно
str:=Strings.Text;
str:=StringReplace(str,#13#10,"&$",rfReplaceAll);


 
Kolan ©   (2005-08-08 18:07) [11]


> И обратно
> str:=Strings.Text;
> str:=StringReplace(str,#13#10,"&$",rfReplaceAll);

И что экземпляр TStrings заполнится строкакми?


 
IceBeerg ©   (2005-08-08 18:23) [12]

rolex   (08.08.05 14:20) [5]
Блин, откуда у вас такая логика?!

Просто свежий взляд на код...


 
IceBeerg ©   (2005-08-08 18:27) [13]

Kolan ©   (08.08.05 18:07) [11]
И что экземпляр TStrings заполнится строкакми?

А куда он денется...

Lists the strings in the TStrings object as a single string with the individual strings delimited by carriage returns and line feeds.

Delphi syntax:

property Text: string;

C++ syntax:

__property AnsiString Text = {read=GetTextStr, write=SetTextStr};

Description

Use Text to get or set all the strings in the TStrings object in a single string delimited by carriage return, line feed pairs.

When reading Text, the strings in the list will be separated by carriage return and (on Windows) line feed. If any of the strings in the list contain a carriage return (and line feed), the resulting value of Text will appear to contain more strings than is indicated by the Count property.

When setting Text, the value will be parsed by separating into substrings whenever a carriage return or linefeed is encountered. (The two do not need to form pairs).

If the strings in the list contain carriage return or linefeed characters, a less ambiguous format for the strings is available through the CommaText or DelimitedText property.


 
Kolan ©   (2005-08-08 18:29) [14]

О незнал :)


 
IceBeerg ©   (2005-08-08 18:39) [15]

Kolan ©   (08.08.05 18:29) [14]
Зато теперь знаеш! :)


 
TStas ©   (2005-08-08 19:59) [16]

А вот так не устроит? Разделитель любой
s2 - как раз разделитель, сам ими пользуюсь
function splitToTStringList(s1, s2:String):TStringList;
var
  i, ln:Integer;
  s:String;

begin
Result:=TStringList.Create;
if s2="" then //Если пустая строка, вернуть массив символов
  begin
  for i:=1 to Length(s1) do Result.Add(s1[i]);
  exit;
  end;
ln:=Length(s2);
while (Pos(s2, s1)<>0) do
begin
i:=Pos(s2, s1);
s:=Copy(s1, 1, i-1);
Delete(s1, 1, i+ln-1);
Result.Add(s);
end;

Result.Add(s1);
end;

function joinTStringList(x:TStringList; s:String):String;
var i:Integer;
begin
Result:="";
for i:=0 to x.Count-1 do
   begin
   Result:=Result+x[i];
   if i<x.Count-1 then Result:=Result+s;
   end;
end;



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

Форум: "Основная";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.04 c
10-1100488316
Simon
2004-11-15 06:11
2005.08.28
IMediaDet


4-1120899178
vvvaaa
2005-07-09 12:52
2005.08.28
RasApi


4-1120631827
syte_ser78
2005-07-06 10:37
2005.08.28
скандиск для памяти


14-1121944525
Fin
2005-07-21 15:15
2005.08.28
Самая большая ветка?


4-1120681463
ronyn
2005-07-07 00:24
2005.08.28
Как минимизировать программу в панель задач?





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