Динамические массивы

Clarion.NET & .NET технологии

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Динамические массивы

Сообщение Admin »

Как повторить такой код на С# ?
В частности нижнюю часть там где создаются массивы строк

Код: Выделить всё

private void InitializeDataGridView()
{
    // Create an unbound DataGridView by declaring a column count.
    dataGridView1.ColumnCount = 4;
    dataGridView1.ColumnHeadersVisible = true;

    // Set the column header style.
    DataGridViewCellStyle columnHeaderStyle = new DataGridViewCellStyle();

    columnHeaderStyle.BackColor = Color.Beige;
    columnHeaderStyle.Font = new Font("Verdana", 10, FontStyle.Bold);
    dataGridView1.ColumnHeadersDefaultCellStyle = columnHeaderStyle;

    // Set the column header names.
    dataGridView1.Columns[0].Name = "Recipe";
    dataGridView1.Columns[1].Name = "Category";
    dataGridView1.Columns[2].Name = "Main Ingredients";
    dataGridView1.Columns[3].Name = "Rating";

    // Populate the rows.
    string[] row1 = new string[] { "Meatloaf", "Main Dish", "ground beef",
        "**" };
    string[] row2 = new string[] { "Key Lime Pie", "Dessert", 
        "lime juice, evaporated milk", "****" };
    string[] row3 = new string[] { "Orange-Salsa Pork Chops", "Main Dish", 
        "pork chops, salsa, orange juice", "****" };
    string[] row4 = new string[] { "Black Bean and Rice Salad", "Salad", 
        "black beans, brown rice", "****" };
    string[] row5 = new string[] { "Chocolate Cheesecake", "Dessert", 
        "cream cheese", "***" };
    string[] row6 = new string[] { "Black Bean Dip", "Appetizer", 
        "black beans, sour cream", "***" };
    object[] rows = new object[] { row1, row2, row3, row4, row5, row6 };

    foreach (string[] rowArray in rows)
    {
        dataGridView1.Rows.Add(rowArray);
    }
}
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
try-catch
Бывалый
Сообщения: 62
Зарегистрирован: 03 Декабрь 2005, 13:02
Откуда: Russia

Сообщение try-catch »

Код: Выделить всё

  PROGRAM

arr	string[]

  CODE
	arr &= new string[]{'a', 'b', 'c', 'd'}
	message(arr[1])
Regards,
TC
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

Спасибо ... а тоя пытался в круглые скобки взять массив данных как ('a','b','c')
И еще операции := и &= равнозначны?
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
try-catch
Бывалый
Сообщения: 62
Зарегистрирован: 03 Декабрь 2005, 13:02
Откуда: Russia

Сообщение try-catch »

Admin писал(а):Спасибо ... а тоя пытался в круглые скобки взять массив данных как ('a','b','c')
И еще операции := и &= равнозначны?
Нет:
&= - присвоение референсов;
:= - т.н. smart-assignment, т.е. компилятор должен сам решить что использовать; либо =, если это value-type, либо &=, если это референс.
Regards,
TC
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

Кстати по Dispose. Насколько я читал .Net славится своей "сборкой мусора"
Т.е. я так понимаю, больших ликов не будет от игнорирования Dispose?
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Сообщение Дед Пахом »

Dispose вызовется при сборке мусора или при завершении программы, так что вобщем-то можно игнорировать. Другое дело, что ресурсы ОС остаются захваченными, что может привести к их исчерпанию в худшем случае.
С уважением, ДП
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

Не ну это понятно... неосвобождение одного объекта и тысяч таких объектов приводит к разным результатам :)
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
try-catch
Бывалый
Сообщения: 62
Зарегистрирован: 03 Декабрь 2005, 13:02
Откуда: Russia

Сообщение try-catch »

Admin писал(а):Кстати по Dispose. Насколько я читал .Net славится своей "сборкой мусора"
Т.е. я так понимаю, больших ликов не будет от игнорирования Dispose?
Зависит от реализации конкретного класса.
Например System.Drawing.SolidBrush метод Dispose() в MSDN содержит такое замечание:
Always call Dispose before you release your last reference to the Brush. Otherwise, the resources it is using will not be freed until the garbage collector calls the Brush object's Finalize method.
Т.е. забудьте про Garbage Collector и освобождайте вручную.

Если же в описании Dispose() предупреждений нет, то важно вовремя убивать референсы на неиспользуемые объекты. Иначе все будет висеть и никакой Garbage Collector не поможет.
Regards,
TC
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

Вот такой код работает

Код: Выделить всё

Clipboard byte[]
  CODE
Clipboard &= new byte[100]
а такой нет

Код: Выделить всё

Clipboard byte[,]
  CODE
Clipboard &= new byte[100,100]
как писать, что делать?
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
try-catch
Бывалый
Сообщения: 62
Зарегистрирован: 03 Декабрь 2005, 13:02
Откуда: Russia

Сообщение try-catch »

Admin писал(а):Вот такой код работает

Код: Выделить всё

Clipboard byte[]
  CODE
Clipboard &= new byte[100]
а такой нет

Код: Выделить всё

Clipboard byte[,]
  CODE
Clipboard &= new byte[100,100]
как писать, что делать?

Код: Выделить всё

Clipboard byte[,]
  CODE
    Clipboard &= (new byte[100,100]) AS byte[,]
Хотя выглядит неинтуитивно и кривовато. :?
Regards,
TC
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

испохабили язык ... :(
ну вот как примеры с Си# переделывать скажите мне.

P.S. А откуда ты это все знаешь? :)
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
try-catch
Бывалый
Сообщения: 62
Зарегистрирован: 03 Декабрь 2005, 13:02
Откуда: Russia

Сообщение try-catch »

Admin писал(а):испохабили язык ... :(
С AS-ом это временный workaround. К следующему релизу обещали исправить.
Admin писал(а):ну вот как примеры с Си# переделывать скажите мне.
Спокойно так, неторопясь... Без попыток обогнать паровоз...
Admin писал(а):P.S. А откуда ты это все знаешь? :)
У разработчиков Clari# компилятора спрашиваю. :roll:
Regards,
TC
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

Мен!
Выкладывай примеры. :)
Хотя бы просто куски кода ... а то нефига в некоторых местах непонятно.

P.S. В курсе как делать делегаты или как пользоваться System.Delegate?
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
try-catch
Бывалый
Сообщения: 62
Зарегистрирован: 03 Декабрь 2005, 13:02
Откуда: Russia

Сообщение try-catch »

Admin писал(а):Мен!
Выкладывай примеры. :)
Спокойствие, только спокойствие!
На Clari# пока ничего не делал и не собираюсь - жду прибытия паровоза (то бишь AppGen'a).
Привыкать к новому синтаксису, который к тому же еще в процессе устаканивания, тоже удовольствие ниже среднего.
Так что пока осмысленных примеров нет. (Кое-кто уже игрушку успел наваять, между прочим! :roll:)
Admin писал(а):Хотя бы просто куски кода ... а то нефига в некоторых местах непонятно.
Если есть конкретные вопросы - могу спросить.
За спрос не бьют...
Admin писал(а):P.S. В курсе как делать делегаты или как пользоваться System.Delegate?
В простейшем случае так:

Код: Выделить всё

  PROGRAM
  MAP
! declare delegate
DelegateDecl  PROCEDURE(clastring), TYPE
! declare method with matching parameters
TestProc  PROCEDURE(clastring)
! declare method with delegate as parameter
TestParam  PROCEDURE(DelegateDecl)
  END

  CODE
    TestParam(new DelegateDecl(TestProc))

TestParam  PROCEDURE(DelegateDecl test)
  CODE
    test('Hello delegate!')

TestProc  PROCEDURE(clastring s)
  CODE
    message(s)
Regards,
TC
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

Это сильно простейший случай ...
Хотелось бы такого функционала который присутствует у стандартных классов...

Хочу в своем классе сделать возможность

Код: Выделить всё

MyClass.OnShowStatus += MainForm.ShowStatus

MainForm.ShowStatus PROCEDURE(string text)
  CODE
  MESSAGE(text)
Понимаешь что имелось в виду?
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Ответить