嗨这是我的第二个问题.我有下表
|-----|-------|------|------|
|._id.|..INFO.|.DONE.|.LAST.|
|..1..|...A...|...N..|......|
|..2..|...B...|...Y..|..L...|<--- cursor.moveToPosition((int)_id-1);
|..3..|...C...|...Y..|......|
|..4..|...D...|...Y..|......|
|..5..|...E...|...N..|......|
|..6..|...F...|...N..|......|
|-----|-------|------|------|
Run Code Online (Sandbox Code Playgroud)
我用的代码是:
cursor = db.query(TABLE_NAME, new String[]{INFO,DONE,LAST},null,null,null,null,null);
cursor.moveToPosition((int)_id-1);
String Yval = cursor.getString(cursor.getColumnIndex(DONE));
do
{
cursor.moveToNext();
Yval= cursor.getString(cursor.getColumnIndex(DONE));
}
while (Yval=="Y");
s = Yval;
Run Code Online (Sandbox Code Playgroud)
我最初将光标指向我访问的最后一行,然后我创建一个循环来遍历DONE列中的值,而不是在列的行中有Y的情况下停止.当N出现在循环中时,循环应该停止.但它不起作用.Yval永远不等于"Y".因此,光标会执行一个'moveToNext',然后退出循环,因为它不会将Yval读为"Y".(我也将所有内容都更改为整数.1表示N,0表示Y,但仍然无效)所以我在这里做错了什么?
如何在以编程方式单击下载按钮后下载文件,因此无需知道下载文件的URL.
下载文件后,出现提示并询问您是否要保存文件,按"是"后,另一个提示会询问您要保存文件的位置.因此,首先下载文件,可能在某个地方的缓冲区中,在初始下载后,会出现提示.
因此,一旦单击按钮,您如何捕获下载流并将其保存为某个文件,而不显示弹出提示?
(任何单击按钮的方法都可以,以下情况应该没问题.)
procedure TForm1.Button1Click(Sender: TObject);
var
x: integer;
ovLinks: OleVariant;
begin
WebBrowser1.Navigate('The web page');
//wait for page to down load
ovLinks := WebBrowser1.OleObject.Document.all.tags('A');
if ovLinks.Length > 0 then
begin
for x := 0 to ovLinks.Length-1 do
begin
if Pos('id of button', ovLinks.Item(x).id) > 0 then
//or if Pos('href of button', ovLinks.Item(x).href) > 0 then
begin
ovLinks.Item(x).click;
Break;
end;
end;
end;
end;
Run Code Online (Sandbox Code Playgroud)
这个问题的原因是:无法始终找到文件的URL.例如:在这个网站上,我无法以编程方式找到网址,但在按下导出按钮后,使用IE,文件被下载到"Temporary Internet Files"文件夹中.在IE'Temporary Internet Files'文件夹中,它有一个列'Internet地址',显示网址.但是在Chrome中没有这样的数据.但是,在这个网站上,我可以以编程方式找到网址,但是当我下载文件时,按"此处",该文件不会出现在IE"Temporary Internet Files"文件夹中.对于其他网站,可以在文件夹中找到网址并通过编程方式找到它,但在其他网站上无法找到网址.
以下代码给出了几个错误,其中两个是:
我想知道它们是否未在"使用"部分声明.有没有人知道为什么它不会编译.我从Delphi帮助中获取了代码.
此外,不会出现完成的"消息框"或"嘟嘟声".
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, SHDocVw, StdCtrls, MSHTML, activex;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
WebBrowser1: TWebBrowser;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
CurDispatch: IDispatch; {save the interface globally }
implementation
{$R *.dfm}
procedure TForm1.WebBrowser1NavigateComplete2(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);
begin
if CurDispatch = nil then
CurDispatch := pDisp; …Run Code Online (Sandbox Code Playgroud)