Код программы: 代码: unit Unit46; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,ActiveX, OleCtrls, SHDocVw, StdCtrls; type TForm46 = class(TForm) Edit1: TEdit; Button1: TButton; Memo1: TMemo; Button2: TButton; WebBrowser1: TWebBrowser; GroupBox1: TGroupBox; GroupBox2: TGroupBox; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form46: TForm46; implementation {$R *.dfm} function GetHTML(WebBrowser: TWebBrowser; ACode: TStrings): Boolean; var ps: IPersistStreamInit; ss: TStringStream; sa: IStream; s: string; begin ps := WebBrowser.Document as IPersistStreamInit; s := ''; ss := TStringStream.Create(s); try sa := TStreamAdapter.Create(ss, soReference) as IStream; Result := Succeeded(ps.Save(sa, True)); if Result then ACode.Add(ss.Datastring); finally ss.Free; end; end; procedure TForm46.Button1Click(Sender: TObject); begin webbrowser1.Navigate('http://www.google.ru'); end; procedure TForm46.Button2Click(Sender: TObject); begin GetHTML(webbrowser1,memo1.Lines); end; procedure TForm46.FormCreate(Sender: TObject); begin end; end.
PHP-Интерпритатор,по сути дела особого отношения к программирования не имеет. Delphi-компилируемый язык программирования с кучей плюх и прочей фигни. Это всё равно что сравнить жопу с пальцем.
Не просто так говорят *Программирование на пхп* В делфи кста тоже. 代码: St:=RussianToUnicode(IdHTTP1.Get('http://xxxx.ru')); На пхп я б давно всё сделал =( Но есть необходимость именно в делфи это всё реализовать. Так теперь к делу. Не буду создавать новой темы а продолжу тут. Мне необходимо реализовать сохранение данных из TListView в XLS. В общем вот тут всё описано. Но без примера мне трудно понять. Если не сложно показать пример(код) кнопки при нажатии на которую будет происходить сохранение информации из TListView в XLS. Столбцы - #, Имя, Фамилия, E-mail адрес, Адрес, Индекс, Город, Страна, Телефон. Оть (:
XLS это если я не ошибаюсь это Excel ? На делфи сорцах пример довольно сраный для любителей сделать всё самому,есть вариант куда легче.
Её то как раз и нужно создать и записать в неё данные из ЕListView в котором Столбцы - #, Имя, Фамилия, E-mail адрес, Адрес, Индекс, Город, Страна, Телефон. И в каждом сталбце записаны значения.
Почитал про Excel на Delphi и написал вот такой вот код. Всё работает. 代码: procedure TForm3.Button3Click(Sender: TObject); var exApp : Variant; exBook : Variant; exSheet : Variant; begin try exApp := CreateOleObject('Excel.Application'); exApp.Visible := True; exBook := exApp.WorkBooks.Add; exSheet := exBook.WorkSheets[1]; exSheet.Name := 'Данные. Лист 1'; //Формируем шапку таблицы. exSheet.Cells[1, 1].Value := 'Имя'; exSheet.Cells[1, 2].Value := 'Фамилия'; exSheet.Cells[1, 3].Value := 'Город'; exSheet.Cells[1, 4].Value := 'Телефон'; //Записываем данные из лист вьюв exSheet.Cells[2, 1].Value := ListView1.Items[0].SubItems[0]; end; exSheet := Unassigned; exBook := Unassigned; exApp := Unassigned; finally end; end; Только вот что делать если сюда 代码: exSheet.Cells[2, 1].Value := ListView1.Items[0].SubItems[0]; end; нужно добавить несколько данных - ListView1.Items[0-10].SubItems[0-10]
я в курсе. Мне уточнения нужны были. Ну сделал уже. Вопрос теперь такой - Как можно узнать кол-во заполненных столбцов в ListView??????????????????????????
Пасяб. 代码: for i2:=0 to 4 do for j2:=StrToInt(edit3.text) to StrToInt(edit4.text) do for j3:=0 to ListView1.Items.Count-1 do exSheet.Cells[j2+2, i2+1].Value := ListView1.Items[j3].SubItems[i2]; В чём ошибка? 代码: for j3:=0 to ListView1.Items.Count-1 do и 代码: ListView1.Items[j3].SubItems[i2] По идеи он должен записывать с 0 по последний заполненный столбец, но копирует поч-то только данные из последнего столбца =(
代码: exSheet.Cells[j2+2, i2+1].Value := ListView1.Items[j3].SubItems[i2]; Чтото вот тут,не могу сказать ибо не знаю что происходит с i2 до этого участка.
i2 это просто цифры от 1 до 4 代码: for i2:=0 to 4 do Если я делаю вот так 代码: for i2:=0 to 4 do for j2:=0 to 9 do exSheet.Cells[j2+1, i2+1].Value := ListView1.Items[j2].SubItems[i2]; То всё идёт но мне нужно exSheet.Cells[j2+1, i2+1] и ListView1.Items[j2] сделать заполнение разными значениями..
В общем напиши как заполнить вот так exSheet.Cells[1180-1190, 1-4].Value := ListView1.Items[0-9].SubItems[1-4];
Ну вариант тебя не устроит ибо писать задротно,но... циклом тут эпик фэйл будет. Либо делать массив указателей либо писать ручками. 2 вариант будет проще.(т.е exSheet.Cells[1180, 1].Value := ListView1.Items[0].SubItems[1]; и т.д. для всех полей =D)