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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.01 c
6-37835
Manulo
2003-11-11 14:54
2004.01.13
Socket Error #10049


1-37691
Эли
2003-12-23 14:10
2004.01.13
Иконки в файле Project.res


3-37513
JIH
2003-12-16 00:41
2004.01.13
Нужна база на interbase


3-37519
palych
2003-12-16 14:26
2004.01.13
Сумма полей!??


6-37840
Bless
2003-11-11 09:20
2004.01.13
Что такое пакетный коммутатор?





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