Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> тип string, нестыковка 
V
    Опции темы
svarogik
Дата 15.7.2006, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



Код

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, а считает что нечто другое 
PM MAIL   Вверх
Palladin
Дата 15.7.2006, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



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


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
svarogik
Дата 15.7.2006, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



Код

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) показывает абсолютно правильно 
PM MAIL   Вверх
Palladin
Дата 15.7.2006, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



хм....хня какаята....если не показывает ничего значит в perem и нет ничего smile другого объяснения нет smile  


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
Quadr0
Дата 15.7.2006, 21:57 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











...

Это сообщение отредактировал(а) Quadr0 - 15.7.2011, 11:37
  Вверх
volvo877
Дата 15.7.2006, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 14
Всего: 116



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

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

Код

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


или, что лучше:
Код
perem := bufera[7] + bufera[8];
 
PM MAIL   Вверх
svarogik
Дата 18.7.2006, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



Не народ ваще фигня оказалась, я по привычке с паскалем думаю, индексы массива с 1 идут, а в делфи то первый нулевой, если массив динамический, и вот в несуществующая переменная пыталась обратится в интежер 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0667 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.