Форум: "Основная";
Текущий архив: 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