Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нет времени изучать MQL5? Библиотека исходников для вас!
Dmitry Luck'janenko
447
Dmitry Luck'janenko 2012.10.25 17:49 

Есть строка

StringConcatenate(TerminalPath(), "\experts\files\",Filename,".ini")

Но в соответствии с синтаксисом комбинация \" дает просто кавычку. И дальнейшие операторы рассматриваются как текст.
Из справки : Если необходимо ввести в строку двойную кавычку ("), то перед ней надо поставить символ обратной косой черты (\).

Можно между слешем и кавычкой поставить пробел, но будет ли тогда правильно читаться путь? Там ведь добавляется лишний пробел. Полный путь необходим для передачи в Dll. Кто знает помогите пожалуйста.

Vadim Zhunko
5219
Vadim Zhunko 2012.10.25 17:52  
lucka88:

Есть строка

Но в соответствии с синтаксисом комбинация \" дает просто кавычку. И дальнейшие операторы рассматриваются как текст.
Из справки : Если необходимо ввести в строку двойную кавычку ("), то перед ней надо поставить символ обратной косой черты (\).

Можно между слешем и кавычкой поставить пробел, но будет ли тогда правильно читаться путь? Там ведь добавляется лишний пробел. Полный путь необходим для передачи в Dll. Кто знает помогите пожалуйста.

StringConcatenate(TerminalPath(), "\\experts\\files\\", Filename, ".ini");
Dmitry Luck'janenko
447
Dmitry Luck'janenko 2012.10.25 19:19  

не получается. Вопрос решил следующим образом

StringConcatenate(TerminalPath(), "\experts\files",CharToStr(92),Symbol(),".ini")

Вопрос теперь покруче. Этот путь передается в Dll , Dll строит форму, и форме по событию когда ставится RadioButton вызывается процедура которая пытается записать файл. При этом терминал завершает свою работу.

 

procedure TForm1.WriteIni();
var
  myFile : TextFile;
begin
   AssignFile(myFile,TerminalPath);
   ReWrite(myFile);

   WriteLn(myFile, 'Hello');
   WriteLn(myFile, 'World');

   CloseFile(myFile);
end;
Путь передается в переменную TerminalPath. Где-то читал что текстовая строка на Си заканчивается нулем , пробовал обрезать не получается... Delete(TerminalPath, Length(TerminalPath)-1,1); - вызывает ошибку. Подскажите пожалуйста в чем может быть проблема.
Vadim Zhunko
5219
Vadim Zhunko 2012.10.25 19:55  
lucka88:

не получается. Вопрос решил следующим образом

Понял. Это ошибка отображения строки кода в МЭ4. На самом деле всё работает правильно и компилируется. Это старая ошибка МЭ4.

Для красоты отображения делаю так:

StringConcatenate(TerminalPath(), "\\experts\\files\\",
                  Filename, ".ini");
Vadim Zhunko
5219
Vadim Zhunko 2012.10.25 19:57  
lucka88:

Путь передается в переменную TerminalPath. Где-то читал что текстовая строка на Си заканчивается нулем , пробовал обрезать не получается... Delete(TerminalPath, Length(TerminalPath)-1,1); - вызывает ошибку. Подскажите пожалуйста в чем может быть проблема.

Что за делет такой, откуда?
Dmitry Luck'janenko
447
Dmitry Luck'janenko 2012.10.25 20:10  

Этот путь передается в Dll , Dll строит форму, и форме по событию когда ставится RadioButton вызывается процедура которая пытается записать файл. Код процедуры в delphi

procedure TForm1.WriteIni();
var
  myFile : TextFile;
begin
   AssignFile(myFile,TerminalPath);
   ReWrite(myFile);

   WriteLn(myFile, 'Hello');
   WriteLn(myFile, 'World');

   CloseFile(myFile);
end;

При этом терминал непредвиденно завершает свою работу.

Владимир Тезис
4270
Владимир Тезис 2012.10.26 07:28  
lucka88:

Этот путь передается в Dll , Dll строит форму, и форме по событию когда ставится RadioButton вызывается процедура которая пытается записать файл. Код процедуры в delphi

При этом терминал непредвиденно завершает свою работу.


>> procedure TForm1.WriteIni();

А разьве такое объявление процедуры не нарущает ни чего?

..........

procedure TForm1.FormCreate(Sender: TObject); 

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий