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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обращение к переменным по строке 
:(
    Опции темы
Ариец
Дата 13.5.2007, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Сабж:
в php есть такая возможность обращатсья к переменной через другую переменную. Например:

Код

$y='123';
$x='y';
echo $$x;

таким образом будет выведено: 123

Как таким же образом обратиться к переменной в DELPHI?

Заранее спасибо smile
PM MAIL ICQ   Вверх
lukas
Дата 13.5.2007, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ариец, ПХП это скриптовой язык... он интерпретируется и не переводится на машинный в отличии от Делфи и С++,

поэтому я не удивлюсь что можно написать и так



Код

$a="($b>0)"

if $a { ... }




 smile 

Это сообщение отредактировал(а) lukas - 13.5.2007, 17:09


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
mspuz
Дата 13.5.2007, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Может тебе помогут указатели
Код

var
MyX, MyY: String;
p: Pointer;
begin
 MyX := '1';
 p := @MyX;
 ShowMessage(String(p^));
end;

PM MAIL   Вверх
lukas
Дата 13.5.2007, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



mspuz, метод не оправдывает средства, так как ему нужно только из строковой информации сформировать название переменной и как бы использовать ее. Лучше не придумывать велосипед, ведь эти языки для разных вещей созданы, PHP код интерпретирует интерпретатор, в первозданном его виде, значит для него вся написанная информация представляет из себя строковые выражение, но Делфи компилирует весь свой код, переводя его на машинный. 


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
Ариец
Дата 13.5.2007, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



lukas, нет, не работает к сожалению smile

А в делфях мне это надо вот для какой цели:

есть два массива записей с "почти" одинаковой структурой.
Масив 1:
id
colm1
colm2
Массив 2:
id
colm3
colm4

название полей именно таое должно быть. (иначе не было бы никакого гемороя).
ТАк вот. Требуется написать функцию для забивания в эти массивы текстовых таблиц. Написать то я написал, но написал их коряво. Вот так вот:

  
Код

open_table('table_1.csv');
  while not(eof(f)) do
    begin
      readln(f,str);
      out_strings:=TStringList.Create;
      extractstrings([';'],[],pchar(str),out_strings);
      tbl1[i].id:=out_strings[0];
      tbl1[i].colm1:=out_strings[1];
      tbl1[i].colm2:=out_strings[2];
      i:=i+1;
      out_strings.Free;
    end;
  open_table('table_2.csv');
  while not(eof(f)) do
    begin
      readln(f,str);
      out_strings:=TStringList.Create;
      extractstrings([';'],[],pchar(str),out_strings);
      tbl2[i].id:=out_strings[0];
      tbl2[i].colm3:=out_strings[1];
      tbl2[i].colm4:=out_strings[2];
      i:=i+1;
    end;


ТО есть просто тупо два раза повторил алгоритм считывания. Хотелось бы как-нить записать этот алгоритм в процедуру.... Перезагрузка процедур не рулит, ибо всё-равно эти два куска текста останутся. Какие ещё есть для этого варианты?
PM MAIL ICQ   Вверх
skyboy
Дата 13.5.2007, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



обязательно массив? рукотворная коллекция не пойдет? С ООП в Делфи знакомство имеем?
PM MAIL   Вверх
Ариец
Дата 13.5.2007, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



К сожалению обязательно массив :( Препода переспорить - бесполезно.
С ООП не очень знаком. НЕ люблю я их smile
PM MAIL ICQ   Вверх
aktuba
Дата 14.5.2007, 01:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

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



Код

procedure PutArray(AFileName: string; var arr: TArray);
begin
  open_table(AFileName);
  while not(eof(f)) do
    begin
      readln(f,str);
      out_strings:=TStringList.Create;
      extractstrings([';'],[],pchar(str),out_strings);
      arr[i].id:=out_strings[0];
      arr[i].colm1:=out_strings[1];
      arr[i].colm2:=out_strings[2];
      i:=i+1;
      out_strings.Free;
    end;
end;

procedure Arrays;
begin
  PutArray('table_1.csv', tbl1);
  PutArray('table_2.csv', tbl2);
end;


Примерно так =). Неужели сложно?

Добавлено через 23 секунды
Цитата

С ООП не очень знаком. НЕ люблю я их smile 


ОЧЕНЬ ЗРЯ!!!


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Ариец
Дата 14.5.2007, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



aktuba, неа, не так. tbl1 и tbl2 имеют разный тип.
PM MAIL ICQ   Вверх
aktuba
Дата 14.5.2007, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

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



Цитата

aktuba, неа, не так. tbl1 и tbl2 имеют разный тип. 


А структура одинаковая? Тогда создай указатель на структуру одной из них и пробуй обмануть другую =)


--------------------
user posted image
PM MAIL WWW Skype   Вверх
skyboy
Дата 14.5.2007, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



Цитата(aktuba @  14.5.2007,  20:31 Найти цитируемый пост)
Тогда создай указатель на структуру одной из них и пробуй обмануть другую =) 

простым приведением типов, как мне кажется, вполне можно избавить себя от "всяких там" указателей smile
Код

type
   TRec1 = record
    x,y: Integer;
    name: string;
   end;
   TRec2 = record
    x0,y0: Integer;
    surname: string;
   end;
var
  first: TRec1;
  second: TRec2;
begin
first.X:= 55;
first.y:= 21;
first.name:= 'first';
second.x0:= 11;
second.y0:= 7;
second.surname:= 'second';
ShowMessage(TRec2(first).surname + '(' + IntToStr(TRec2(first).x0) + ',' + IntToStr(TRec2(first).y0) + ')');
ShowMessage(TRec1(second).name + '(' + IntToStr(TRec1(second).x) + ',' + IntToStr(TRec1(second).y) + ')');
end;

PM MAIL   Вверх
aktuba
Дата 15.5.2007, 06:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

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



skyboy, верно... привычка   smile 


--------------------
user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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