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

Вниз

Строка   Найти похожие ветки 

 
Parus ©   (2006-03-23 09:17) [0]

Помогите пожалуста сделать такую вещь: имеется строка какого типа 7676,8787 и надо из дельфии это "разложить" в две переменные типа "String" так чтобы что ДО ЗАПЯТОЙ было в первой переменной ,А ПОСЛЕ ЗАПЯТОЙ во вторую переменную. Но запятая может быть и ЛЮБЫМ символом.
Я сейчас что-то такое написал но во время ранирования вся зависло :-(  (а я н-НЕ сохрапнился).


 
Johnmen ©   (2006-03-23 09:23) [1]

А в чём проблема?


 
Parus ©   (2006-03-23 09:48) [2]


> А в чём проблема?

Вот в чём: и надо из дельфии это "разложить" в две переменные типа "String" так чтобы что ДО ЗАПЯТОЙ было в первой переменной ,А ПОСЛЕ ЗАПЯТОЙ во вторую переменную. Но запятая может быть и ЛЮБЫМ символом.
Я сейчас что-то такое написал но во время ранирования вся зависло :-(  (а я н-НЕ сохрапнился).


 
Leonid Troyanovsky ©   (2006-03-23 09:51) [3]


> Parus ©   (23.03.06 09:48) [2]

> ,А ПОСЛЕ ЗАПЯТОЙ во вторую переменную. Но запятая может
> быть и ЛЮБЫМ символом.


В общем случае задача решения не имеет.
Т.е., если запятая может быть цифрой, то как изволите делить.

--
Regards, LVT.


 
Anatoly Podgoretsky ©   (2006-03-23 09:53) [4]

Parus ©   (23.03.06 09:48) [2]
Что сам то делал?


 
Anatoly Podgoretsky ©   (2006-03-23 09:54) [5]

Leonid Troyanovsky ©   (23.03.06 09:51) [3]
Задача имеет решение, только результат неверный.


 
Плохиш ©   (2006-03-23 11:06) [6]

Pos/Copy/Delete спасут отца русской демократии, после того как он включит думалку.


 
perat ©   (2006-03-23 11:45) [7]

procedure TForm1.Button1Click(Sender: TObject);
var a,b,x,zn:string;
   i:integer;
begin
 edit2.MaxLength:=1;
 x:=edit1.text;
 zn:=edit2.text;
 i:=pos(zn,x);
 a:=copy(x,1,i-1);
 b:=copy(x,i+1,length(x)-i);
 memo1.lines.add(a);
 memo1.lines.add(b);
end;


 
Parus ©   (2006-03-23 18:45) [8]


> В общем случае задача решения не имеет.
> Т.е., если запятая может быть цифрой, то как изволите делить.
>

У меня числа целые, А код буду пробовать!Спосыба!


 
Parus ©   (2006-03-28 11:59) [9]

Долго химичил, вот код:

function zap(s:string):integer; // определяем каким симв. является ,
var
h:integer;
begin
for h := 0 to length(s) do
begin
if s[h]="," then
begin
result:=h;
end;

end;

end;
function doz(s:string):string; //исп. предыдущую функцию узнаём что до запятой
var
sp:string;
i:integer;
begin

sp:="";
for i := 1 to zap(s)-1 do
begin
sp:=sp+s[i];
end;
result:=sp;
end;

function poz(s:string):string ; //Аналогично предыдущей... после запятой
var
sp:string;
i:integer;
begin
sp:="";
for i := zap(s)+1 to length(s) do
begin
sp:=sp+s[i];
end;
result:=sp;
end;

function poi(s:string):TPoint ; //используя POZ и DOZ даём  Tpoint x-до запятой, y-после
var
P:Tpoint;
begin
p.X:=strtoint(doz(s));
p.Y:=strtoint(poz(s));
result:=p;
end;

______________________________
КОД НЕ ОПТИМИЗИРОВАН и не форматирован!!! (я и так его едва написал :) )


 
Anatoly Podgoretsky ©   (2006-03-28 12:18) [10]

Код неверный, а так как тебе удалось его откомпилировать, то это означает подавление ошибок в компиляторе.


 
Parus ©   (2006-03-28 14:57) [11]

Удалено модератором
Примечание: Личная переписка


 
Parus ©   (2006-03-28 14:58) [12]

Tpoint это просто, я не сказал что мне числа нужны!


 
Сергей М. ©   (2006-03-28 15:02) [13]


> Parus ©   (28.03.06 14:57) [11]


> Все работает!


> for h := 0 to length(s) do
> begin
> if s[h]="," then


Лажа - здесь.
Символы строки индексируются начиная с единицы, а не с нуля.
Все остальные твои ф-ции, опирающиеся на работу данной, получая заведомо неверный результат не могут работать правильно в принципе


 
Boris Marchenko ©   (2006-03-28 17:46) [14]

S - строка

for i := 1 to length(S) do
 if S[i] = "," then Break;

First := StrToInt(AnsiMidStr(S, 1, i - 1));
Last := StrToInt(AnsiMidStr(S, i + 1, Length(S) - i));

Имхо, так. Перебор символов до нахождения запятой, тогда брейк, переменная i хранит номер символа ",". Далее мы с помощью StrToInt получаем из строки кусок до запятой (с 1 символа, длиной i - 1) и кусок после запятой (с номера символа после запятой длиной Length(S) - i)


 
Boris Marchenko ©   (2006-03-28 17:48) [15]

Т. е. все это:
function doz(s:string):string; //исп. предыдущую функцию узнаём что до запятой
var
sp:string;
i:integer;
begin

sp:="";
for i := 1 to zap(s)-1 do
begin
sp:=sp+s[i];
end;
result:=sp;
end;

function poz(s:string):string ; //Аналогично предыдущей... после запятой
var
sp:string;
i:integer;
begin
sp:="";
for i := zap(s)+1 to length(s) do
begin
sp:=sp+s[i];
end;
result:=sp;
end;

вмещается в 2 строки


 
EvS ©   (2006-03-28 20:02) [16]

>for i := 1 to length(S) do
> if S[i] = "," then Break;

i:=Pos(S,",")



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

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

Наверх




Память: 0.48 MB
Время: 0.04 c
2-1143965258
0lesya
2006-04-02 12:07
2006.04.16
Как с программой написанной под 5-м Delphi работать под 7-м!


2-1144073348
dera
2006-04-03 18:09
2006.04.16
Я открываю модально форму, на которой есть грид...


2-1144052701
serg111111
2006-04-03 12:25
2006.04.16
Помогите разобраться с сервисом


15-1143022683
Kolan
2006-03-22 13:18
2006.04.16
С чего начать изучать UML


15-1142857467
nisa01
2006-03-20 15:24
2006.04.16
требуется программист Delphi,





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