我正在尝试在我的xcopy脚本中使用Jenkins(全局)环境变量.
${WORKSPACE} doesn't work
"${WORKSPACE}" doesn't work
'${WORKSPACE}' doesn't work
Run Code Online (Sandbox Code Playgroud) 这开始让我发疯了......但似乎我不幸自己想出来:/
我需要设置一个机构共享两个从机之间的字符串值,例如,名为从属甲和从乙.
目前我发现的最接近的是这个问题: Jenkins Slave Environment Variable Refresh
但它仍然旨在启用buildcripts中的访问,而不是Slaves环境变量本身.(相关SO问题:如何在Jenkins中使用Windows批处理命令使用环境变量?)
目前我有这个设置:
1)在A上工作A被触发.
它执行这个Windows批处理代码(显然,实际路径被替换为'<>'):
cmd /c start java -jar <path_of_slave>\slave.jar -jnlpUrl <url_of_slave>/slave-agent.jnlp
setenv.exe /m HOR_BUILD_ID -delete
setenv.exe /m HOR_BUILD_ID %BUILD_NUMBER%
setenv.exe /m HOR_UPSTREAM_ID -delete
setenv.exe /m HOR_UPSTREAM_ID %JOB_NAME%
Run Code Online (Sandbox Code Playgroud)
相当不言自明和直截了当的imho.
2)A上的作业具有上游作业B,即成功构建时触发.因此,在从属B中,B构建执行此批处理代码(显然,实际路径被替换为'<>'):
SetLocal EnableDelayedExpansion
@echo off
@echo --- Refreshing Environemnt variables...
@echo on
set prgfil=%ProgramFiles(x86)%
call "%WORKSPACE%\..\..\..\tools\misc\resetvars.bat"
@echo --- Reading environment variables...
copy /y "<path_containing_%HOR_UPSTREAM_ID%_variable" "<path_containing_%HOR_BUILD_ID%_variable" …
Run Code Online (Sandbox Code Playgroud) 今天早上我终于明白了,决定向你求助.问题是在我的Delphi应用程序中根本没有显示任何提示...我已经阅读了关于THintAction的问题,我已阅读指南/教程/手册,试图手动调用提示窗口(触发事件处理程序),但没有任何效果.他们只是没有表现出来.我的想法已经用完......
我试过:在组件,表单,事件处理程序,应用程序activatehint()上设置父showhints ...
有没有其他方法可以做到这一点(当然,API调用除外)?
我添加了一个比原始插件晚3年发布的代码,但它仍然返回错误...
代码是直截了当的......但我仍然很想念一些方面......
看到这段代码:
{
nsScreenshot NSIS Plugin
(c) 2003: Leon Zandman (leon@wirwar.com)
Re-compiled by: Linards Liepins (linards.liepins@gmail.com)
Code by: http://www.delphitricks.com/source-code/forms/make_a_desktop_screenshot.html
(e) 2012.
}
library nsScreenshot;
uses
nsis in './nsis.pas',
Windows,
Jpeg,
graphics,
types,
SysUtils;
const
USER32 = 'user32.dll';
type
HWND = type LongWord;
{$EXTERNALSYM HWND}
HDC = type LongWord;
{$EXTERNALSYM HDC}
BOOL = LongBool;
{$EXTERNALSYM BOOL}
{$EXTERNALSYM GetDesktopWindow}
function GetDesktopWindow: HWND; stdcall; external USER32 name 'GetDesktopWindow';
{$EXTERNALSYM GetWindowDC}
function GetWindowDC(hWnd: HWND): HDC; stdcall; external USER32 name 'GetWindowDC';
{$EXTERNALSYM GetWindowRect}
function …
Run Code Online (Sandbox Code Playgroud) SOers!
我在内容修改自动化方面遇到了DokuWiki的一些问题.我需要以编程方式更新页面,在我的情况下,数据源将是文本文件,将进行正则表达式解析,输出将插入到DokuWiki页面中.
到目前为止,我还没有发现任何与此功能有关的内容,但我真的怀疑我只是需要这样的东西,所以再次进入bycicle并不是最好的方式:)
目前这个问题有一些内容:
在Dokuwiki Render插件中访问原始Wiki页面内容
我的子问题是 - 如何使用它来进行内容修改?我有时间浏览整个dokuwiki源代码,所以我希望有一些lego块可以简单地连接在一起,以便在不开发新接口等的情况下实现它.
非常感谢您的回复!
我知道 - 子程序的私有访问模式是其父代程序/过程,对吧?
有没有办法从"外部世界" - dpr或单位中的其他功能/程序访问它们?
另外 - 哪种方式需要更多的计算和空间来编译文件?
例如:
function blablabla(parameter : tparameter) : abcde;
procedure xyz(par_ : tpar_);
begin
// ...
end;
begin
// ...
end;
procedure albalbalb(param : tparam) : www;
begin
xyz(par_ : tpar_); // is there any way to make this function public / published to access it therefore enabling to call it this way?
end;
// all text is random.
// also, is there way to call it from DPR in this manner?
// …
Run Code Online (Sandbox Code Playgroud) 不幸的是,我没有从我的开发PC中写这个问题所以我可能会犯一些错误.请抱歉...所以 - 我的问题 - 您使用什么方法在应用程序中实现错误记录?
在web(http://delphi.about.com)是很好的事件处理程序,但它只是复制文件中的系统错误,但我想通过捕获内存和堆栈(和处理器信息,如果我有时间)扩展其功能).我是否应该知道我是否动态调用它,而不是在表单上添加其组件?
procedure TForm1.ApplicationEvents1Exception(Sender: TObject; E: Exception) ;
var
ErrorLogFileName : string;
ErrorFile : TextFile;
ErrorData : string;
begin
ErrorLogFileName := ChangeFileExt(Application.ExeName,'.error.log') ;
AssignFile(ErrorFile, ErrorLogFileName) ;
//either create an error log file, or append to an existing one
if FileExists(ErrorLogFileName) then
Append(ErrorFile)
else
Rewrite(ErrorFile) ;
try
//add the current date/time and the exception message to the log
ErrorData := Format('%s : %s',[DateTimeToStr(Now),E.Message]) ;
WriteLn(ErrorFile,ErrorData) ;
finally
CloseFile(ErrorFile)
end;
//Show the exception
Application.ShowException(E) ;
end; …
Run Code Online (Sandbox Code Playgroud) 我搜索了主题优惠,但没有设法让一个...
对不起,如果我误会了.如果是,请在此处指出正确的问题.
好的,回到商界.情况:我正在使用ShowMessage()作为应用程序中某些事件的简单"状态简报"提供程序:
procedure SatusBriefingDialog();
begin
if Sender = SomeObject then
begin
Application.NormalizeToMosts;
MessageDlg(Handle, PChar('The_string_that_forms_nice_informative_window / dialog'));
Application.RestoreTopMosts;
end;
end;
Run Code Online (Sandbox Code Playgroud)
现在,我想打磨它,因此我想使用扩展的ascii表,但是,我无法选择访问它们的最佳方式.也许我只是不知道那个神奇的功能......
以下是使用OEMToANSI/OEMToChar和反向功能的方法:http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_20381022.html.我尝试了它们没有运气,因为:
来自EDN/MS-Help的语法
BOOL OemToChar(LPCSTR lpszSrc,LPTSTR lpszDst);
参数
lpszSrc [in]指向OEM定义的字符集中以空字符结尾的字符串的指针.
lpszDst [out]指向已翻译字符串的缓冲区的指针.
如果将OemToChar函数用作ANSI函数,则可以通过将lpszDst参数设置为与lpszSrc参数相同的地址来转换字符串.如果将OemToChar用作宽字符函数,则无法执行此操作.
我需要的是Char(Ord(170)); ,Char(Ord(180)); 和查尔(奥德(190)) - http://www.asciitable.com/.显然,使用默认的WInXP代码页我不能使用它们.现在,我谷歌了一下,找到了这个解决方案:
FormShow事件代码:
procedure TMain.FormShow(Sender: TObject);
var
i : longint;
begin
re.Font.Name := 'Terminal';
re.Font.Size := 9;
//seems that charset must be set last
re.Font.Charset := OEM_CHARSET;
re.DefAttributes.Name := 'Terminal';
re.DefAttributes.Size := 9;
re.DefAttributes.Charset …
Run Code Online (Sandbox Code Playgroud) 所以 - 最近我遇到一些问题,确定调用程序的方式,如果在两个时间参数都相同 - 比如:/ something/something.我在runetime将图标与程序相关联,我可以使用cmd来调用它,但是,每当我在相关文件上使用doubleclikc(带图标)时,只需打开程序,但不会调用所需的rotine,因为我没有必要的触发器/属性/参数如果执行双击,而不是运行...> appname.exe/something/something.
你能举出简单的例子,还是从理论上写出所有必需的功能等等.
目前,正如你猜测的那样,我使用ParamStr/ParamCount/blablabla/FindCMDLineSwitch /和其他一些功能......但......仍然... :(
delphi ×6
delphi-xe ×2
jenkins ×2
windows ×2
ascii ×1
ascii-art ×1
automation ×1
batch-file ×1
cmd ×1
components ×1
dialog ×1
dokuwiki ×1
dynamic ×1
function ×1
hudson ×1
nsis ×1
parameters ×1
plugins ×1
procedures ×1
screenshot ×1
slave ×1
static ×1
subroutine ×1