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

Вниз

Как можно разбить строку на символы?   Найти похожие ветки 

 
z.Evgen   (2003-12-19 08:45) [0]

Имеется переменная String как ее разбить на символы?


 
MBo ©   (2003-12-19 08:47) [1]

F1 по String types


 
Sens ©   (2003-12-19 08:49) [2]

Можешь сразу обращатсья к каждому сиволу string[i], а можешь затосовать в массив, хотя строка - это и есть массив символов!

for i:=0 to string.length do
Begin
a[i]:=string[i];
End


 
MBo ©   (2003-12-19 08:56) [3]

>Sens
Может, не стоит приводить код, в котором и смысла нет, и ошибок больше, чем строк?


 
Спрашивающий_   (2003-12-19 09:22) [4]

procedure TForm1.Button1Click(Sender: TObject);
var
M:array of Char;
I:Byte;
S:String;
begin
Text:="";
S:=Edit1.text;
SetLength(M,Length(S));
For I:=1 To Length(S) Do
begin
M[I]:= S[I];
Text:=Text+"Char #"+IntToStr(I)+"="+M[I]+" ";
end;
Text:=Text+"Неужели все так просто!!!"
end;


 
Спрашивающий_   (2003-12-19 09:25) [5]

Динамический массив это так от нечего делать, в его реализации есть ошибки!


 
alex_***   (2003-12-19 09:29) [6]

даже сложнее чем можно.. CopyMemory(@m[0], @s[1],length(s))


 
Polevi ©   (2003-12-19 09:32) [7]

ужас


 
Anatoly Podgoretsky ©   (2003-12-19 09:39) [8]

Polevi © (19.12.03 09:32) [7]
Пока еще нет.


 
REA ©   (2003-12-19 10:21) [9]

TSymbolicStringToCharCoolParser = Class(TInterfacedObject)
Procedure GetStringAndSplitOntoSeparateCharsASAP();


 
TUser ©   (2003-12-19 11:06) [10]

progressBar1.min:=1;
progressBar1.max:=length(str);
progressBar1.position:=1;
for i:=Low(integer) to high(integer) do begin
if i<1 then label1.caption:="Ничего не делаем, отдыхаем"
else if i<length(str)+1 then begin
progressbar1.position:=i;
label1.caption:=inttostr(i)+"-й сивол - это "+str[i];
end else label1.caption:="Успели прочитать?"
end;


 
Masik2003   (2003-12-19 11:22) [11]

var
S: String;
C: Char;

...
S[N] - где N-нужный символ


 
Нурик ©   (2003-12-20 07:10) [12]

Возьмите ножницы и разрешьте на куски этот стринг!


 
cyberwolf   (2003-12-20 14:31) [13]

Вообще-то строка - это массив символов. То есть следующие переменные...
var
s1: string;
s2: array[0..255] of char;
...будут равны.

Чтобы обратиться к отдельному символу строки используй следующую структуру (пример):
s1[2] - обращение к 2 символу строки.


 
Anatoly Podgoretsky ©   (2003-12-20 14:45) [14]

Polevi © (19.12.03 09:32) [7]
Вот теперь уже ближе к истине.


 
jack128 ©   (2003-12-20 15:01) [15]

Разрешите поздравить Rouse_ c пополнением коллекции


 
easy ©   (2003-12-20 15:10) [16]

=)


 
Verg ©   (2003-12-20 15:25) [17]


> Sens © (19.12.03 08:49) [2]



> Спрашивающий_ (19.12.03 09:22) [4, 5]


Вам с этим надо срочно что-то делать! :(


 
Style ©   (2003-12-20 16:54) [18]

Вот еще классный метод :)

procedure TForm1.Button1Click(Sender: TObject);
var
str: string;
symstr: pchar;
i: integer;
type
PStrRec = ^StrRec;
StrRec = packed record
refCnt: Longint;
length: Longint;
end;
const
skew = sizeof(StrRec);
SEPARATOR = CHR($20);
function StrLen(const s: AnsiString): Longint;
asm
TEST EAX,EAX
JE @@done
MOV EAX,[EAX-skew].StrRec.length;
@@done:
end;
begin
str := "Имеется переменная String как ее разбить на символы?";

GetMem(symstr,(StrLen(str)*3)+1);
FillMemory(symstr,(StrLen(str)*3)+1,$20);
for i := 0 to StrLen(str) do
begin
CopyMemory(Pointer(integer(symstr) + (i*3)), Pointer(integer(pchar(str))+i),1);
end;
Caption := symstr;
FreeMem(symstr);
end;


 
Marser ©   (2003-12-20 17:45) [19]

Как говорил Chubais:"ААААААААААААААААААААА!"
Разрешите присоединиться к jack128 © ([15]) :-)
Особенно порадовал первый ответ, достойный "Розвой коллекции" и "Орешника". Воистину, недалеко ушел от задающего тупые вопросы серьёзно и подробно на них отвечающий.


 
Knight ©   (2003-12-20 18:15) [20]

Почему-то вспомнился один вопрос... Как лучше сказать?

1) Представитель, распространённого на планете Земля, отряда парнокопытных осуществляет процесс удовлетворения потребности своего организма в воде, путём создания разряжения в полости рта и всасывания её из предмета цилиндрической формы, радиусом большим, чем окружность морды...

или

2) Лошадь пьёт из ведра.

:)


 
Евлампия Никифоровна   (2003-12-20 18:36) [21]

Меня тоже волновала эта проблема. Я обратилась к одному профессионалу Delphi, и он мне дал замечательную функцию получения n-го символа строки. Функция работает безупречно и довольно быстро. Спасибо, что есть такие хорошие люди.

function GetSimbolN(N: Integer; const S: string): char;
{
N - номер того самого символа, который необходимо получить;
S - та самая строка из которой получаем символ.
}
var i, n: integer;
b: Boolean;
begin
for i := 0 to n*(Length(s)+1) do
begin
b := False;

if (i < n) and (sin(i*Pi) > 1) then
b := Boolean(Integer(True)*117);

if (i > n) and (cos(i*Pi) < -1) then begin
b := Boolean(Integer(False)*117);
Result := GetSimbolN(i-2, s);
end;

if (i = n) and (sin(123*i-n) <= 1) then
b := True;

if b = true then
if (n > 0) and (n < Length(s)) then
Result := s[(32 div 8)*1 - 8 + i];

if b = False then
Continue;
end;
end;


А вот и разбивка всей строки. Я сама додумалась!


var
n, i: Integer;
chars: array of char;

begin
n := High(s)+1;
SetLength(chars, n);
for i := 1 to n do
begin
chars[i-1] := GetSimbolN(i, s);
end;
end;


Если будут вопросы, обращайтесь. Помогу всем!

С уважением,
Евлампия Никифоровна.


 
Евлампия Никифоровна   (2003-12-20 18:40) [22]

Извиняюсь, ошибка
Надо вот это
Result := s[(32 div 4)*1 - 8 + i];
Иначе даст не то, что надо!


 
panov ©   (2003-12-20 20:00) [23]

>Евлампия Никифоровна
А под своим ником не судьба напсиать?


 
Евлампия Никифоровна   (2003-12-20 20:29) [24]

> panov © (20.12.03 20:00) [23]

Напиши я под своим ником, Вы бы не задали этот вопрос, а я бы не узнала, что Вас волнует. :)))


 
Евлампия Никифоровна   (2003-12-20 20:38) [25]

Кстати, Евлампия - это тоже, что Липа :))

> panov ©

Да и как я могла написать под своим
именем столь тупую шутку?
Неохота портить драгоценный ник. :-))
Глупо всегда ходить в одной маске.
В Единственной. Тем более в интернете..


 
Nous Mellon ©   (2003-12-20 20:40) [26]


> [25] Евлампия Никифоровна (20.12.03 20:38)
> Кстати, Евлампия - это тоже, что Липа :))

Интересно, кто же вы на самом деле? :)


 
Slavian ©   (2003-12-20 20:43) [27]


> Евлампия Никифоровна (20.12.03 18:36) [21]

такой громадный текст, а получается то же что написать, взяв те же названия параметров:

Chars:= s[N];


 
Nous Mellon ©   (2003-12-20 20:45) [28]


> такой громадный текст, а получается то же что написать,
> взяв те же названия параметров:

В обще то это был прикол


 
Евлампия Никифоровна   (2003-12-20 20:45) [29]

> Slavian © (20.12.03 20:43) [27]

Это, что, шутка?
Я, неделю работала с этой проблемой!
Я, лучше Вас разбираюсь!
Мой код самый, оптимальный!


 
P.N.P. ©   (2003-12-20 21:38) [30]

Орешник 100 пудов :)))))))


 
Slavian ©   (2003-12-20 21:38) [31]

ну-ну!


 
SergP ©   (2003-12-20 22:49) [32]

:-) Жаль что все гениальные мысли уже были высказаны, а то так хотелось самому что-то "всунуть" в эту ветку.
А вообще мне вспомнилась ветка про то как просканировать порты. Давно это было. Но прикольно...


 
Ломброзо ©   (2003-12-20 23:15) [33]

а я знаю, кто такая Евлампия.


 
Евлампия Никифоровна   (2003-12-20 23:16) [34]

Я вся внимание :))


 
имя   (2003-12-20 23:20) [35]

Удалено модератором


 
Anatoly Podgoretsky ©   (2003-12-20 23:21) [36]

Липа (20.12.03 23:20) [35]
Диагноз или имя хочешь?


 
Ломброзо ©   (2003-12-20 23:23) [37]

Евлампия, что Вы так напряглись-то? :-))) Я в шаббат разобл#чений не практикую )


 
Липа   (2003-12-20 23:23) [38]

Конечно, диагноз.
Своё имя я сама неплохо знаю.


 
Ломброзо ©   (2003-12-20 23:24) [39]

publicных, в шмышле


 
имя   (2003-12-20 23:26) [40]

Удалено модератором



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

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

Наверх




Память: 0.56 MB
Время: 0.014 c
1-37713
Андреев
2003-12-29 20:32
2004.01.13
шаг для for


6-37815
UNick
2003-11-14 16:14
2004.01.13
Как мне задать тему письма


8-37799
Scote
2003-09-14 20:55
2004.01.13
Нестандартное расширение битмапа


1-37668
Catherin
2003-12-26 15:02
2004.01.13
text iz memo pri perenisenii v pis mo stanovitsja v odnu strochku


1-37766
baataars
2003-12-31 15:08
2004.01.13
dbgrid и колесико мыши