我正在将我的应用程序转换为Delphi 2009,并且遇到了一些需要将字符串(宽)转换为AnsiString的调用的有趣问题.
这是一个展示我遇到的问题的例子:
var
s: PAnsiChar;
...
s := PAnsiChar(Application.ExeName);
Run Code Online (Sandbox Code Playgroud)
使用Delphi 2007和以前的版本,s:= PChar(Application.ExeName)将返回应用程序exe路径.
使用Delphi 2009,s:= PAnsiChar(Application.ExeName)仅返回'E'.
我的猜测是因为我正在将unicode字符串转换为ansi字符串,但是如何将其转换为PAnsiChar获取完整字符串?
我需要在java中为具有Web应用程序的9个服务器的集群实现缓存解决方案.我看到了apache JCS,看起来很旧,你知道另一个开源解决方案吗?
我已经做了大约18个月的裸机TCP/IP,所以我想知道目前的技术水平是多少.
我正在寻找正面和负面两个方面,开发服务器和客户端软件.
我将做一个需要坚如磐石的TCP/IP层的项目,所以对我来说这是一个重要的方面:)
为了成为一个社区维基,我正在寻找更广泛的答案,而不仅仅是'坚如磐石'.因此,例如关于特征宽度的信息也是值得赞赏的.
我将使用答案中的相关方面更新问题,以获得具有这些库的平衡概述的Wiki条目.
例如,请参阅下面我的回答以及我过去与Indy的经历我对Indy中的异常处理和反冻结感到矛盾,虽然我已经习惯了它,但仍感觉有点不自然.
现在我用Delphi 2007(非Unicode)和XE(Unicode)开发,所以我考虑的库应该至少支持那两个Delphi版本.
我有一个UITabBarController,显示四个选项.到目前为止,这些都运行良好.
我的问题是标签栏只有在IOS模拟器中测试4英寸视网膜显示设备时才会响应.标签栏响应的所有其他设备,我可以选择其他视图.
我没有iPhone 5来测试它所以我不知道这是模拟器的故障还是Apple已经改变了新硬件的标签栏等的工作方式或使其更严格而且我写了错误的代码首先.
我需要编写一个'简单'的工具来从ASCII转换为EBCDIC?
Ascii来自Java,Web和AS400.我有一个谷歌周围,似乎找不到一个简单的解决方案(也许因为没有一个:().我希望有一个开源工具或支付已经编写的实用工具.
也许这样吗?
Converter.convertToAscii(String textFromAS400)
Converter.convertToEBCDIC(String textFromJava)
Run Code Online (Sandbox Code Playgroud)
谢谢,
斯科特
我已将文件保存在sdcard/media/audio/ringtones文件夹中.该文件将出现在铃声选择的settings/sound/phone铃声列表中.
但我想将该文件设置为我的代码中的铃声.这是我的代码.
File k = new File(path, filename);
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "TwiAppclip");
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
values.put(MediaStore.Audio.Media.ARTIST, "cssounds ");
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
values.put(MediaStore.Audio.Media.IS_ALARM, false);
values.put(MediaStore.Audio.Media.IS_MUSIC, false);
Uri uri = MediaStore.Audio.Media.getContentUriForPath(k
.getAbsolutePath());
Uri newUri = getApplicationContext().getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(getApplicationContext(),
RingtoneManager.TYPE_RINGTONE, newUri);
Run Code Online (Sandbox Code Playgroud)
uri我在这里但是我得到了newUri = null.我认为这就是为什么它没有设置为铃声.
谁知道问题出在哪里?我该怎么做好newUri?
如何打开以前存储在"privat"文件系统中的文件?该文件由Web服务下载,应存储在本地fs中.尝试通过Intent(Action_View)打开文件时出现"奇怪"错误.虽然文件存在于文件系统中(在模拟器/ eclipse中看到文件浏览器中的文件),但它不会显示在启动的调用galery活动中.而不是图片,galery显示黑色屏幕没有内容(除了操作栏).尝试通过此方法打开pdf/movie/mp3文件时会出现同样的情况(pdf表示文件已损坏).
BTW:存储在本地fs上的数据有效(没有损坏),我从调试器下载文件(通过pull方法),文件可以在我的工作站上打开...
public void onAttachment(Context context, Attachment attachment) {
try {
//Attachment is a structured data object that contains of a byte[], filename and mimetype (like image/jpeg)
FileOutputStream fos = FileOutputStream fos = context.openFileOutput(attachment.getAttachmentFileName(), Context.MODE_PRIVATE);
fos.write(attachment.getBinary());
fos.flush();
fos.close();
File f = context.getFileStreamPath(attachment.getAttachmentFileName());
Uri uri = Uri.fromFile(f);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri,attachment.getAttachmentMimetype());
context.startActivity(intent);
} catch (IOException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud) 当我尝试Trunc()一个Real值时,我得到一个(可重复的)浮点异常.
例如:
Trunc(1470724508.0318);
Run Code Online (Sandbox Code Playgroud)
实际上,实际代码更复杂:
ns: Real;
v: Int64;
ns := ((HighPerformanceTickCount*1.0)/g_HighResolutionTimerFrequency) * 1000000000;
v := Trunc(ns);
Run Code Online (Sandbox Code Playgroud)
但最终它仍归结为:
Trunc(ARealValue);
Run Code Online (Sandbox Code Playgroud)
现在,我不能在其他任何地方重复它 - 就在这一点.每次失败的地方.
幸运的是计算机并不神奇.英特尔CPU执行非常具体的可观察操作.所以我应该能够找出浮点运算失败的原因.
进入CPU窗口
v:= Trunc(ns)
Run Code Online (Sandbox Code Playgroud)fld qword ptr [ebp-$10]
这会将ebp- $ 10处的8字节浮点值加载到浮点寄存器中ST0.
内存地址[ebp- $ 10]的字节数为:
0018E9D0: 6702098C 41D5EA5E (as DWords)
0018E9D0: 41D5EA5E6702098C (as QWords)
0018E9D0: 1470724508.0318 (as Doubles)
Run Code Online (Sandbox Code Playgroud)
调用成功,浮点寄存器包含适当的值:

接下来是对RTL Trunc函数的实际调用:
call @TRUNC
Run Code Online (Sandbox Code Playgroud)
接下来是Delphi RTL的Trunc功能:
@TRUNC:
Run Code Online (Sandbox Code Playgroud)sub esp,$0c wait fstcw word ptr [esp] //Store Floating-Point Control Word on the …
嘿伙计们,谢谢你的阅读
我目前正在尝试使用Google风格的计算器.您输入一个字符串,它确定是否可以计算并返回结果.
我从基础开始慢慢开始:+ - / *和括号处理.
我愿意随着时间的推移改进计算器,并且在前一段时间学习了一些关于词法分析的知识,我构建了一个令牌列表和相关的正则表达式模式.
这种工作很容易适用于Lex和Yacc等语言,除了我正在开发一个仅限Javascript的应用程序.
我试图将这个想法转录成Javascript,但我无法弄清楚如何以干净漂亮的方式处理所有内容,尤其是嵌套的括号.
让我们定义一个计算器查询:
// NON TERMINAL EXPRESSIONS //
query -> statement
query -> ? // means end of query
statement -> statement operator statement
statement -> ( statement )
statement -> prefix statement
statement -> number
number -> integer
number -> float
// TERMINAL EXPRESSIONS //
operator -> [+*/%^-]
prefix -> -
integer -> [0-9]+
float -> [0-9]+[.,][0-9]+
Run Code Online (Sandbox Code Playgroud)
词法分析包括验证没有任何东西看起来不像终端表达式之一:运算符,前缀,整数和浮点数.哪个可缩短为一个正则表达式:
(我添加了空格以使其更具可读性)
var calcPat =
/^ (\s*
( ([+/*%^-]) | ([0-9]+) …Run Code Online (Sandbox Code Playgroud) 我想在html电子邮件中将文本限制为150px宽度表的固定行数,例如:
Long text continues down the road into a lane and doesn't stop there
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样:
Long text continues down
the road into a lane and...
Run Code Online (Sandbox Code Playgroud)
我正在截断字符串最多45个字符,包括省略号,但有时当一个长字出现时它会变为三行:
Long text continues at
accelerating speed into the
road...
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想打破加速这个词,或者在第一行填充尽可能多的字符并继续第二行,有没有办法在html中执行此操作?(我查看了自动换行,但显然并非所有电子邮件客户端都支持)
此外,由于这是电子邮件客户端,我也不能做任何javascript等.
delphi ×3
android ×2
java ×2
actionview ×1
ascii ×1
caching ×1
css ×1
delphi-2007 ×1
delphi-2009 ×1
delphi-5 ×1
delphi-xe ×1
ebcdic ×1
filesystems ×1
html ×1
ibm-midrange ×1
ios ×1
javascript ×1
regex ×1
ringtone ×1
tcp ×1
wiki ×1