ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

03.01.2010, 19:54
|
|
Участник форума
Регистрация: 30.09.2009
Сообщений: 148
Провел на форуме: 11581319
Репутация:
241
|
|
PHP код:
procedure summa1(var a,b:integer, s:integer)
вот именно эта часть мне чуть-чуть непонятна(эту процедуру писал сам)
тоисть почему именно так, а не иначе, видел процедуры типа:
PHP код:
procedure summa1(var a,b:integer, s:integer):integer
так какая же разница между первой и второй
и ещё не понел какие переменные надо объявлять в главной программе, а какие в подпрограммах
Последний раз редактировалось total90; 03.01.2010 в 19:59..
|
|
|

03.01.2010, 20:11
|
|
Участник форума
Регистрация: 09.03.2009
Сообщений: 178
Провел на форуме: 1605524
Репутация:
523
|
|
Сообщение от total90
PHP код:
procedure summa1(var a,b:integer, s:integer)
вот именно эта часть мне чуть-чуть непонятна(эту процедуру писал сам)
тоисть почему именно так, а не иначе, видел процедуры типа:
PHP код:
procedure summa1(var a,b:integer, s:integer):integer
так какая же разница между первой и второй
и ещё не понел какие переменные надо объявлять в главной программе, а какие в подпрограммах
второе это не процедура а функция. и писать надо так
function summa1(var a,b:integer, s:integer):integer
|
|
|

03.01.2010, 22:04
|
|
Познающий
Регистрация: 28.09.2008
Сообщений: 65
Провел на форуме: 152084
Репутация:
8
|
|
Товарищ прав ) я сначала глянул меня аж в стан поставило )
но ближе к сути.
вот допустим у тебя есть
function summ(var:a,b:integer):integer
begin
summ:=a+b;
end;
в программе
summ(a,b);
вернёт тебе результат в summ .
для процедуры
procedure summ(var a,b,s:integer)
begin
s:=a+b;
end;
summ(a,b,s);
при вернёт тебе значение в переменную s глобального типа.
гы . не буду пока нагружать переменными локального типа.
|
|
|

03.01.2010, 22:12
|
|
Участник форума
Регистрация: 30.09.2009
Сообщений: 148
Провел на форуме: 11581319
Репутация:
241
|
|
будем считать что я всё понел 
|
|
|

04.01.2010, 07:52
|
|
Постоянный
Регистрация: 12.05.2009
Сообщений: 395
Провел на форуме: 4761503
Репутация:
229
|
|
Где можно посмотреть пример реализации отправки пакета UDP на WINSOCK?
Пример с MS не понятно что отправляет (отправляет пустой пакет (но такой пример мне не подходит)):
Код:
#include <windows.h>
#include <stdio.h>
#include "winsock2.h"
void main() {
WSADATA wsaData;
SOCKET SendSocket;
sockaddr_in RecvAddr;
int Port = 27015;
char SendBuf[1024];
int BufLen = 1024;
//---------------------------------------------
// Initialize Winsock
WSAStartup(MAKEWORD(2,2), &wsaData);
//---------------------------------------------
// Create a socket for sending data
SendSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
//---------------------------------------------
// Set up the RecvAddr structure with the IP address of
// the receiver (in this example case "123.456.789.1")
// and the specified port number.
RecvAddr.sin_family = AF_INET;
RecvAddr.sin_port = htons(Port);
RecvAddr.sin_addr.s_addr = inet_addr("123.456.789.1");
//---------------------------------------------
// Send a datagram to the receiver
printf("Sending a datagram to the receiver...\n");
sendto(SendSocket,
SendBuf,
BufLen,
0,
(SOCKADDR *) &RecvAddr,
sizeof(RecvAddr));
//---------------------------------------------
// When the application is finished sending, close the socket.
printf("Finished sending. Closing socket.\n");
closesocket(SendSocket);
//---------------------------------------------
// Clean up and quit.
printf("Exiting.\n");
WSACleanup();
return;
}
|
|
|

04.01.2010, 17:05
|
|
Постоянный
Регистрация: 26.01.2008
Сообщений: 796
Провел на форуме: 5209663
Репутация:
357
|
|
Как на winsock, работать с AC? Через idHTTP долго и нестабильно...
|
|
|

04.01.2010, 17:09
|
|
Участник форума
Регистрация: 27.03.2008
Сообщений: 288
Провел на форуме: 800727
Репутация:
83
|
|
Подскажите, как из StringGrid при помощи Delphi конвертировать данные в таблицу через OpenOffice.org (есть способ через MS Excel, но есть необходимость использовать средства OpenOffice). Версия дельфей - седьмая.
И ещё: как определить количество строк в StringGrid?
|
|
|

04.01.2010, 17:14
|
|
Постоянный
Регистрация: 14.04.2008
Сообщений: 327
Провел на форуме: 584699
Репутация:
69
|
|
Насчет конверции хз, потыкай макрос, VB и Dlp похожи,
А строки это толи Rows толи Columns в свойствах stringgrid:
Stringgrid1.rows.count
|
|
|

06.01.2010, 08:03
|
|
Познающий
Регистрация: 03.12.2008
Сообщений: 56
Провел на форуме: 140714
Репутация:
29
|
|
Сообщение от ronald
Подскажите, как из StringGrid при помощи Delphi конвертировать данные в таблицу через OpenOffice.org (есть способ через MS Excel, но есть необходимость использовать средства OpenOffice). Версия дельфей - седьмая.
И ещё: как определить количество строк в StringGrid?
За количество строк отвечает свойство RowCount
Код:
smth := StringGrid1.RowCount;
По поводу вставки текста в OpenOffice. Подключаешься к серверу автоматизации ОО, создаешь новый или открываешь имеющийся документ, вставляешь текст в нужную ячейку.
Вот класс, который реализует часть нужных действий:
Код:
type
TOpenOffice = class
function Connect: boolean;
procedure Disconnect;
function CreateDocument (Application: string): boolean;
procedure InsertTextCalc(Text: string; Index: integer = 0;
col: integer = 0; row: integer = 0; Border: boolean = false;
Bold: boolean = false);
private
StarOffice: Variant;
Document: Variant;
end;
implementation
{$D+,L+}
function TOpenOffice.Connect: boolean;
begin
if VarIsEmpty(StarOffice) then
StarOffice := CreateOleObject('com.sun.star.ServiceManager');
Result := not (VarIsEmpty(StarOffice) or VarIsNull(StarOffice));
end;
procedure TOpenOffice.Disconnect;
begin
StarOffice := Unassigned;
end;
function TOpenOffice.CreateDocument(Application: String): boolean;
var
StarDesktop: Variant;
begin
StarDesktop := StarOffice.createInstance('com.sun.star.frame.Desktop');
Document := StarDesktop.LoadComponentFromURL(
'private:factory/s'+Application, '_blank', 0,
VarArrayCreate([0, -1], varVariant));
Result := not (VarIsEmpty(Document) or VarIsNull(Document));
end;
procedure TOpenOffice.InsertTextCalc(Text: string; Index: integer = 0;
col: integer = 0; row: integer = 0; Border: boolean = false;
Bold: boolean = false);
var
Sheets, Sheet, Cell, Struct: variant;
begin
Sheets := Document.GetSheets;
Sheet := Sheets.getByIndex(Index);
Cell := Sheet.getCellByPosition(col, row);
Cell.setString(Text);
if Border then
begin
Struct := StarOffice.Bridge_GetStruct('com.sun.star.table.BorderLine');
Struct.lineDistance := 0;
Struct.innerLineWidth := 0;
Struct.outerLineWidth := 1;
cell.leftBorder := Struct;
Cell.rightBorder := Struct;
Cell.topBorder := Struct;
Cell.bottomBorder := Struct;
end;
if Bold then
Cell.CharWeight:= 200;
end;
end; // TOpenOffice
А использовать примерно так:
Код:
var
OpenOffice: TOpenOffice
procedure TfmMain.bOOConnectClick(Sender: TObject);
begin
OpenOffice := TOpenOffice.Create;
OpenOffice.Connect;
OpenOffice.CreateDocument('calc');
OpenOffice.InsertTextCalc(StringGrid1.Cells[1,1], 0, 1, 1, true);
OpenOffice.Disconnect;
end;
Скажу сразу, что в качестве кода класса скопировал кусок одного из своих старых модулей, а часть кода написал прямо здесь, поэтому мог ошибиться. Если есть желание - пиши после праздников в аську, поболтаем на эту тему.
Последний раз редактировалось StealthMaster; 06.01.2010 в 08:05..
|
|
|

06.01.2010, 14:30
|
|
Познающий
Регистрация: 14.05.2009
Сообщений: 92
Провел на форуме: 299447
Репутация:
5
|
|
Всем доброго времени суток ! :-))
Не подскажете как сделать такую же панель как "Nero Search" Чтобы она так же была на панели задач. Заранее спасибо :-)
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|