Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.05;
Скачать: CL | DM;

Вниз

Присвоение одному массиву другого   Найти похожие ветки 

 
Dmitry_177   (2006-10-17 14:02) [0]

Есть два массива

var
SelfAppFileName: array[0..MAX_PATH] of Char;
AppFileName: array[0..MAX_PATH] of Char;

Как мне присвоить один массив другому? Так не работает: SelfAppFileName := AppFileName;


 
MsGuns ©   (2006-10-17 14:06) [1]

Читать Кэнту. Быстро !


 
Palladin ©   (2006-10-17 14:07) [2]

а зачем тебе это в виде массивов? чем обыкновенные строки провинились?


 
Джо ©   (2006-10-17 14:08) [3]

> Как мне присвоить один массив другому?

Процедура Move.


 
Dmitry_177   (2006-10-17 14:10) [4]

Palladin, учусь на апи программировать, а там во многих функциях так строки вроде как задаются, например в том же

GetModuleFileName(0, AppFileName, SizeOf(AppFileName));


вобщем как мне одному присвоить другой?


 
Dmitry_177   (2006-10-17 14:14) [5]

Так правильно?

Move(AppFileName, SelfAppFileName, SizeOf(AppFileName));


 
Palladin ©   (2006-10-17 14:25) [6]

Нет, это конечно похвально, только GetModuleFileName принимает в параметрах совсем не массив, а указатель на выделенный буфер и размер этого буффера. так что по хорошему надо


GetModuleFileName(0,@AppFileName[Low(AppFileName)],High(AppFileName)-Low(AppFileName)+1)


 
Dmitry_177   (2006-10-17 14:25) [7]

А если нужно сделать так? Грубо говоря присвоить так:

AppFileName := SelfAppFileName + "Test";

Так будет как-то не очень мне кажется:

Move(AppFileName + "Test", SelfAppFileName, SizeOf(AppFileName + "Test"));

Может лучше в последнем параметре указывать MAX_PATH? Или еще что-то?


 
Dmitry_177   (2006-10-17 14:33) [8]

Move(AppFileName + "Test", SelfAppFileName, SizeOf(AppFileName + "Test")); так даже и не работает...((( Как сделать такое присваивание помогите пожалуйста...


 
Palladin ©   (2006-10-17 14:39) [9]

Вообще - используй строки и не мучайся.


Var
s:String;
n:Cardinal;

SetLength(s,MAX_PATH);
n:=GetModuleFileName(0,@s[1],Length(s));
If n=0 Then Raise Exception.Create("ошибка какато");
SetLength(s,n);



и работай с ними как твой душе угодно, прибавляй, присваивай...


 
palva ©   (2006-10-17 14:41) [10]

Можно присваивать и массивы. Только они должны быть одного и того же типа. Читайте учебники по паскалю.
{$APPTYPE CONSOLE}
type
 Tm = array [0..1] of char;
var
 m1, m2: Tm;
begin
 m1 := "qw";
 m2 := m1;
 WriteLn(m2); // qw
end.


 
Dmitry_177   (2006-10-17 14:54) [11]

В том то и дело что они одного и того же типа array[0..MAX_PATH] of Char;


 
Ketmar ©   (2006-10-17 14:58) [12]

>[11] Dmitry_177 17-Oct-2006, 14:54
>В том то и дело что они одного и того же типа array[0..
>MAX_PATH] of Char;
это кто тебе опять так наврал? не пробовал таки учебник почитать? это разные типы. почему? умная книжка по паскалю пояснит, ага.


 
Dmitry_177   (2006-10-17 15:01) [13]

type
TMas = array[0..MAX_PATH] of Char

var
SelfAppFileName: TMas;
AppFileName: TMas;

а так одного?


 
palva ©   (2006-10-17 15:01) [14]

> В том то и дело что они одного и того же типа array[0..MAX_PATH] of Char;

Вы заблуждаетесь.


 
palva ©   (2006-10-17 15:04) [15]

Dmitry_177   (17.10.06 15:01) [13]
а так одного?


Так - одного. И так тоже:
SelfAppFileName, AppFileName:  array[0..MAX_PATH] of Char
одного.


 
Dmitry_177   (2006-10-17 15:11) [16]


type
 TMaxPathString =  array [0..MAX_PATH] of Char;

var
 SysDir: TMaxPathString;
 FileName: TMaxPathString;

...
 GetSystemDirectory(SysDir, MAX_PATH);
 FileName := SysDir + "\test.txt";

А почему так не работает?


 
Ketmar ©   (2006-10-17 15:14) [17]

>[16] Dmitry_177 17-Oct-2006, 15:11
>А почему так не работает?
а с какого испугу? разве array of char -- это теперь строка?


 
Dmitry_177   (2006-10-17 15:15) [18]

а как тогда сделать такое присваивание?


 
Ketmar ©   (2006-10-17 15:16) [19]

>[18] Dmitry_177 17-Oct-2006, 15:15
>а как тогда сделать такое присваивание?
барин, ну почитайте литературу, а? это не уровень начинающего. это, пардон, уровень полного чайника. %-(


 
Dmitry_177   (2006-10-17 15:23) [20]

Я понимаю что это глупый вопрос, но я хотел бы знать на него ответ, книги сейчас рядом нету...(((


 
Ketmar ©   (2006-10-17 15:26) [21]

>[20] Dmitry_177 17-Oct-2006, 15:23
>книги сейчас рядом нету...(((
а интернет зохавал Ктулху...


 
Dmitry_177   (2006-10-17 15:28) [22]

Ну подскажите пожалуйста..


 
Ketmar ©   (2006-10-17 15:30) [23]

за каким ангелом тебе вообще эти массивы? что, [9] нельзя по религиозным причинам?


 
palva ©   (2006-10-17 15:37) [24]


uses SysUtils;

...

GetSystemDirectory(SysDir, MAX_PATH);
strcopy(FileName, SysDir);
strcat(FileName, "\test.txt");
WriteLn(FileName);


 
Ketmar ©   (2006-10-17 15:40) [25]

>[24] palva(c) 17-Oct-2006, 15:37
тогда массив потребно увеличить. а вдруг путь возмёт, и займёт весь MAX_PATH? %-)


 
RASkov   (2006-10-17 21:53) [26]

Правильно говорят работать лучше со строками String, а если необходимо передать параметром в API то - PChar(s);
Т.е. можно так

Var
s:String;
SetLength(s,MAX_PATH);
n:=GetModuleFileName(0, PChar(s), Length(s));


и насчет типов
при таком обявлении создается два разных типа:
type
 arrstr1 [0..MAXPATH] of char;
 arrstr2 [0..MAXPATH] of char;


А в таком случае:

{$APPTYPE CONSOLE}
type
Tm = array [0..1] of char;
var
m1, m2: Tm;
begin
m1 := "qw";
m2 := m1;
WriteLn(m2); // qw
end.

При присваении m2:=m1 создается "псевдоним" на первый массив и далее при m2:="qw" то и m1 тоже станет равен "qw"


 
RASkov   (2006-10-17 21:55) [27]

> При присваении m2:=m1 создается "псевдоним" на первый массив
> и далее при m2:="qw" то и m1 тоже станет равен "qw"

Т.е. хотел сказать так:
{$APPTYPE CONSOLE}
type
Tm = array [0..1] of char;
var
m1, m2: Tm;
begin
m1 := "qw";
m2 := m1;
WriteLn(m2); // qw
m2 := "NewValue";
WriteLn(m1); // NewValue
end.


 
RASkov   (2006-10-17 21:58) [28]

> Присвоение одному массиву другого

А по вопросу - только поэлементно, Move, Copy.



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

Текущий архив: 2006.11.05;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.031 c
15-1161312288
Slider007
2006-10-20 06:44
2006.11.05
С днем рождения ! 20 октября


1-1159166924
aKirill.INFO
2006-09-25 10:48
2006.11.05
Формат фала msm и msi


4-1150985614
PRT
2006-06-22 18:13
2006.11.05
Popup в Run - time


8-1143532496
kmi
2006-03-28 11:54
2006.11.05
Как сохранить TBitmap в jpg-файл с разрешением 300 dpi


15-1161187243
Хинт
2006-10-18 20:00
2006.11.05
Вопрос по html (таблицы)