Size: a a a

2020 April 02

VA

Viktor Akselrod in Delphi & Lazarus
Andrey (svs14) K
Спасибо большое! PAnsiChar спас ситуацию.
там еще должно быть приведение к AnsiString и только потом уже к PAnsiChar
источник

Р

Рус in Delphi & Lazarus
Рус
Подскажите как с этим безобразием бороться? Возврат после F9.
Проблема решилась включением визуальных эффектов в Windows👍
источник

AS

Alexey Shumkin in Delphi & Lazarus
Рус
Проблема решилась включением визуальных эффектов в Windows👍
😀👍
источник

Na

Named as Found in Delphi & Lazarus
Здравствуйте снова. Есть необходимость объявить и присвоить значение переменной вне процедуры, что бы внутри процедуры записывать и читать эту переменную. Когда пытаюсь это сделать, пишет ошибки:
[Error] ps.pas(463): Identifier redeclared: 'PositionByDefault'
[Error] ps.pas(463): ',' or ':' expected but ':=' found


Жалуется на строчки объявления и присвоения значения:
var PositionByDefault: Word;
PositionByDefault := $8C8;


Получается только объявить переменную, но не присвоить ей значение (стерев вторую строчку, тогда компиляция проходит). Присвоить значение получается только внутри процедуры, но в таком случае, каждый раз когда процедура вызывается, происходит и присваивание, чего мне не надо.  Как быть?
источник

С

Сергей in Delphi & Lazarus
Named as Found
Здравствуйте снова. Есть необходимость объявить и присвоить значение переменной вне процедуры, что бы внутри процедуры записывать и читать эту переменную. Когда пытаюсь это сделать, пишет ошибки:
[Error] ps.pas(463): Identifier redeclared: 'PositionByDefault'
[Error] ps.pas(463): ',' or ':' expected but ':=' found


Жалуется на строчки объявления и присвоения значения:
var PositionByDefault: Word;
PositionByDefault := $8C8;


Получается только объявить переменную, но не присвоить ей значение (стерев вторую строчку, тогда компиляция проходит). Присвоить значение получается только внутри процедуры, но в таком случае, каждый раз когда процедура вызывается, происходит и присваивание, чего мне не надо.  Как быть?
Возможно у Вас стоит задача создать процедуру внутри процедуры или внутри програм. Если честно деталей этого процесса не помню, но это все в разделе видимости переменных имхо
источник

Na

Named as Found in Delphi & Lazarus
В общем, мне нужно при вызове процедуры каждый раз прибавлять к переменной число.
Что бы эта переменная внутри этой процедуры росла каждый раз при её вызове. Следовательно, объявлять её нужно за пределами процедуры, если я правильно понимаю.
источник

Na

Named as Found in Delphi & Lazarus
Но использоваться она будет внутри.
источник

AK

Alexey Kulakov in Delphi & Lazarus
var PositionByDefault: Word = $8C8;
источник

AK

Alexey Kulakov in Delphi & Lazarus
это имелось в виду?
источник

С

Сергей in Delphi & Lazarus
Named as Found
Но использоваться она будет внутри.
Если процедура это часть объекта - опишите внутри объявления класса этого объекта ( TForm1 к примеру) и обращайтесь через Self
источник

Na

Named as Found in Delphi & Lazarus
Alexey Kulakov
var PositionByDefault: Word = $8C8;
Да, сработало, теперь всё как надо) Спасибо.
источник

S

Serjone in Delphi & Lazarus
я правильно понимаю, что s:=pAnsiChar('properties');
даст в s Строку с нулем в конце?
источник

AK

Alexey Kulakov in Delphi & Lazarus
логично, ибо PAnsiChar это подразумевает
источник

AS

Alexey Shumkin in Delphi & Lazarus
Named as Found
В общем, мне нужно при вызове процедуры каждый раз прибавлять к переменной число.
Что бы эта переменная внутри этой процедуры росла каждый раз при её вызове. Следовательно, объявлять её нужно за пределами процедуры, если я правильно понимаю.
Зачем тебе ТАК надо?

Уверен, что на самом деле нужно сделать по-другому 😁
источник

AK

Alexey Kulakov in Delphi & Lazarus
если только по-умолчанию строки короткие, будет дополнительное преобразование в памяти, видимо.
источник

S

Serjone in Delphi & Lazarus
Alexey Kulakov
логично, ибо PAnsiChar это подразумевает
у меня первый символ возвращает
источник

AK

Alexey Kulakov in Delphi & Lazarus
Named as Found
В общем, мне нужно при вызове процедуры каждый раз прибавлять к переменной число.
Что бы эта переменная внутри этой процедуры росла каждый раз при её вызове. Следовательно, объявлять её нужно за пределами процедуры, если я правильно понимаю.
кстати говоря, в таком виде, как ты сделал, переменную можно объявить и в теле процедуры. её содержимое будет сохраняться между вызовами.
источник

AK

Alexey Kulakov in Delphi & Lazarus
Serjone
я правильно понимаю, что s:=pAnsiChar('properties');
даст в s Строку с нулем в конце?
s - типа Pchar, а строки по-умолчанию Анси или Юникод?
источник

AK

Alexey Kulakov in Delphi & Lazarus
видимо, у тебя юникодные длинные строки по-умолчанию, вот там и нет преобразования, потому будет только первый символ
источник

S

Serjone in Delphi & Lazarus
Alexey Kulakov
s - типа Pchar, а строки по-умолчанию Анси или Юникод?
поумолчанию юникод
s:pansichar;
источник