Стринг не работи!!!

6 отговора 277 прегледа
#1

Стринг не работи!!!

Здравейте! Имам проблем,който незнам как да разреша! НЕ МОГА ДА КОПИРАМ СТРИНГ ЧРЕЗ ЦИКЪЛ!
Примерно!

var
E,D: String;
I: Integer;
begin
E := 'Text';
for I:=0 to Length(E) do
begin
D := D+E;
end;
result := D;
end;

Би трябвало да работи, ама не! Ако заменя при копирамето D := D+E; с D := E+D; тогава работи, но на обратно! Ако използвам DOWNTO работи.
И това не е било винаги така, ами просто изведнъж стана, че не мога да копирам стринг по този начин, а вчера си работеше!
Видял съм се в чудо, ако някой може да ми помогне, много ще се радвам!

Отговор
в отговор на Me #2

Re: Стринг не работи!!!

Малка грешка допуснах! В цикъла се копира това:

D := D+E;
(горе не бях оказал )

Но проблема си е същия - не работи!

Отговор
в отговор на Me #3

Re: Стринг не работи!!!

ми няма да работи, естествено...
Е[0] навремето беше дължината, ама сега явно не е - съдържа #0, от там, при "копирането" получаваш D[1] = #0, поради което останалото (D[2] до D[5]) се игнорира - NULL Terminated стринг, едно такова нещо :-)))

ето ти функцията:

function copytxt : string;
var
E,D: String;
J: Integer;
begin
E := 'Text';
for J := 1 to Length(E) do begin
D := D + E[J];
end;
result := D;
end;
[/rpe]

--------------------------------------
Започва Път от моят праг...
Отговор
в отговор на Hateras #4

Re: Стринг не работи!!!

Ама че съм глупав!
Побърках се да се чудя какво е, а въобще не обърнах внимание откъде започвам цикъла!
Благодаря много!

Отговор
в отговор на Me #5

Edno utochnenie

Pri novite (golemite) nizove na Borland ima slednata podrobnost:

1. Niza zapochva na otmestvane 0
2. Na otmestvane -4 se namira daljinata na niza (4 bytes)
3. Na otmestvane -8 se namirat broia referencii kam niza (setete se zashto).

Ne pomnia samo dali ne sam razmenil mestata na 2 i 3.

Tuk stava duma za formata na nizovete na Borland. NULL-terminated strings sa neshto drugo.

Ako sam obarkal neshto se izviniavam predvaritelno, ama dolu-gore taka stoiat neshtata.

Uspeh!

Отговор
в отговор на Hateras #6

Re: Стринг не работи!!!

takowata....

function copytxt : string;
var
E,D: String;
J: Integer;
begin
E := 'Text';
D := '';
for J := 1 to Length(E) do begin
D := D + E[J];
end;
result := D;
end;


------------------------------
I got a COMPILER, and I'm not afraid to use it!
Отговор
в отговор на SDR #7

Re: Стринг не работи!!!

естествено :-)))))

--------------------------------------
Започва Път от моят праг...
Отговор