Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Вниз

Статические массивы в C#   Найти похожие ветки 

 
tipman ©   (2004-06-21 14:17) [0]

Как в C# осуществить такое:
type b=record
.......
.......
a:array [0..99] of char
.......
.......
end;
т.е. создать тип (структуру) содержащую сам массив а не указатель.


 
tipman ©   (2004-06-21 16:25) [1]

...или ещё проще, выделить 100 байт в структуре


 
Delirium ©   (2004-06-21 16:33) [2]

char[] a = new char[100];


 
Suntechnic ©   (2004-06-21 18:54) [3]

Delirium ©   (21.06.04 16:33) [2]
char[] a = new char[100];


Так не пойдёт. Массив сам по себе является ссылочным типом.

>tipman ©  
Боюсь что никак. Можно вопрос? Зачем это надо?


 
akvilon ©   (2004-06-21 20:22) [4]

например, если есть dll, и она в это самое место в структуре пишет какую-нибудь строку максимум в 100 char, а также заполняет другие поля структуры. То есть указатель тут нельзя подставлять точно, типа char[] a = new char[100]; не прокатит


 
tipman ©   (2004-06-22 10:39) [5]

akvilon ©   (21.06.04 20:22) [4]

...вот именно такая проблема у меня и встала


 
Serginio666   (2004-06-22 14:28) [6]

struct StaticArray
{
 [FieldOffset(0)]
  byte firstByte; // в Net char 2 byte
 [FieldOffset(99)]
 byte lastByte;

}

доступ к массиву череp унчейв или через

StaticArray[] SA= new StaticArray[1];
int ByteCount=Buffer.ByteLength(SA);
byte[] temp= new byte[ByteCount];
Bufer.BlockCpoy(BlockCopy(SA,0,temp,0,ByteCount);

И работаешь с массивом байтов.
Если нужно приведение к уникодному char используй Encoding


 
Suntechnic ©   (2004-06-22 17:40) [7]

>tipman ©   (22.06.04 10:39) [5]
Так бы сразу и писал.

Если речь идёт просто о строке, тогда определяешь структуру так

[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)]
struct MyStruct
{
   [MarshalAs(UnmanagedType.ByValTStr, SizeConst=100)]
   public string str;
}


Если речь идёт просто о массиве, тогда можно так

[StructLayout( LayoutKind.Sequential)]
public struct MyArrayStruct
{
  [MarshalAs(UnmanagedType.ByValArray, SizeConst=100)]
  public char[] array;
}


 
Vitaly ©   (2004-06-22 17:46) [8]

А что, в с# нет char a(100)?


 
iZEN ©   (2004-06-22 19:50) [9]

В Java так: char[] a = new char[] {"a", "b", "c"};

В C# похожий синтаксис для использования как поля класса, но вот использование в записях не знаю как.


 
Serginio666   (2004-06-23 13:12) [10]

Во версии 2.0 Появились статические массивы, Но работать с ними можно только в унсейве по аналогии с Serginio666   (22.06.04 14:28) [6] , возможно к релизу сделают полную поддержку.



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.031 c
3-1086973523
Vetek
2004-06-11 21:05
2004.07.11
SQL-запрос - выборка популярных значений


1-1088067873
Partos
2004-06-24 13:04
2004.07.11
Удаление строк в Стринггриде


1-1087550958
doma
2004-06-18 13:29
2004.07.11
Попытка создать Frame из Dll...


11-1076351474
Xtz
2004-02-09 21:31
2004.07.11
Уважаемые мастера !!! Как мне за юзать MHXP под KOL ...


14-1088074044
infom
2004-06-24 14:47
2004.07.11
Кто какими компонентами в основном пользуется ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский