Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > тип string


Автор: svarogik 15.7.2006, 12:22
Код

procedure TEditor.N3Click(Sender: TObject);
var buff: PChar; buf,buf1:char; bufera:string; perem:string[2];
begin
if opendialog1.execute then
begin
f_name:=opendialog1.filename;
fn:=TStringList.create({f_name,fmopenread});
fn1:=TFilestream.Create('D:\fghgh\123',fmcreate);

fn.loadfromfile(f_name);



bufera:=fn.Strings[0];

fn1.write(bufera[7],1);
fn1.write(bufera[8],1);
perem[1]:=bufera[7];
perem[2]:=bufera[8];
xmax:=15;
if perem='20' then xmax:=20 ;
{xmax:= strtoint(perem);       }


fn1.write(bufera[14],1);
fn1.write(bufera[15],1);
perem[1]:=bufera[14];
perem[2]:=bufera[15];
{ymax:= strtoint(perem);}


там переменная типа стринг perem в нее из файла сначала записывается 2 потом 0, под разными индексами, я переменной xmax 15 присвоил, так для отладки, и закоментил strtoint потомучто не работала, прога вылетала, тоесть смысл вопроса в том , почему перепенная perem не считает что внутри нее записано 20, а считает что нечто другое 

Автор: Palladin 15.7.2006, 13:51
Попробуй перед сравнение , bufera='20' сделать showmessage(bufera); посмотри что тебе выдаст программа, ты наверняка найдёш ошибку в коде после этого smile  

Автор: svarogik 15.7.2006, 14:12
Код

fn.loadfromfile(f_name);


showmessage(bufera);
bufera:=fn.Strings[0];
showmessage(bufera);

fn1.write(bufera[7],1);
fn1.write(bufera[8],1);
perem[1]:=bufera[7];
perem[2]:=bufera[8];
xmax:=15;
showmessage(perem[1]);


теперь вот какая фишка,  все правильно если вот так ну или в последней строчке индекс на 2 поменять, но не показывает если showmessage(perem) без индексов, хотя должен, showmessage(bufera) показывает абсолютно правильно 

Автор: Palladin 15.7.2006, 21:44
хм....хня какаята....если не показывает ничего значит в perem и нет ничего smile другого объяснения нет smile  

Автор: Quadr0 15.7.2006, 21:57
...

Автор: volvo877 15.7.2006, 21:58
Цитата(svarogik @  15.7.2006,  12:22 Найти цитируемый пост)
смысл вопроса в том , почему перепенная perem не считает что внутри нее записано 20, а считает что нечто другое 

А с какой радости она должна содержать '20'? Ты же вручную меняешь содержимое строки, а длина-то при этом правильной не устанавливается... Сделай, например:

Код

perem := '  '; // 2 пробела
perem[1]:=bufera[7]; // А потом меняй символы
perem[2]:=bufera[8];


или, что лучше:
Код
perem := bufera[7] + bufera[8];
 

Автор: svarogik 18.7.2006, 22:46
Не народ ваще фигня оказалась, я по привычке с паскалем думаю, индексы массива с 1 идут, а в делфи то первый нулевой, если массив динамический, и вот в несуществующая переменная пыталась обратится в интежер 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)