Возникло пару вопросов по ServerSocket: ServerSocket.Socket.Connections[0].SendText('msg') С помощью этой команды сервер отправляет масагу 0 (Первому) клиенту (1-Второй и т.д.), а если допустим 0 отключится то на его место придет 1 и все остальные клиенты сдвинутся на -1, так из этого вопрос: можно ли при подключение клиента к серверу давать ему на все сессию статический номер (Тот который захочу я), еще бы хотелось узнать: Как бы сделать для каждого клиента свой поток? И как отправить всем клиентам масагу? Не подойдет, если использовать вышеперечисленный способ идентификации клиентов... denjf, я имел ввиду использование этих компонентов
буквально всё, простые функции и процедуры мне понятны, нужны ф/п с описаниями(кароче сложные) а-то учу паскаль и завис на месте
эм товарищ, если понять как работают простые функции и процедуры ты с лёгкостью сможешь написать и сложную. приведи пример функции работа которой тебе не понятна.
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
Товарищ прав ) я сначала глянул меня аж в стан поставило ) но ближе к сути. вот допустим у тебя есть 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 глобального типа. гы . не буду пока нагружать переменными локального типа.
Где можно посмотреть пример реализации отправки пакета UDP на WINSOCK? Пример с MS не понятно что отправляет (отправляет пустой пакет (но такой пример мне не подходит)): Code: #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; }
Подскажите, как из StringGrid при помощи Delphi конвертировать данные в таблицу через OpenOffice.org (есть способ через MS Excel, но есть необходимость использовать средства OpenOffice). Версия дельфей - седьмая. И ещё: как определить количество строк в StringGrid?
Насчет конверции хз, потыкай макрос, VB и Dlp похожи, А строки это толи Rows толи Columns в свойствах stringgrid: Stringgrid1.rows.count
За количество строк отвечает свойство RowCount Code: smth := StringGrid1.RowCount; По поводу вставки текста в OpenOffice. Подключаешься к серверу автоматизации ОО, создаешь новый или открываешь имеющийся документ, вставляешь текст в нужную ячейку. Вот класс, который реализует часть нужных действий: Code: 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 А использовать примерно так: Code: 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; Скажу сразу, что в качестве кода класса скопировал кусок одного из своих старых модулей, а часть кода написал прямо здесь, поэтому мог ошибиться. Если есть желание - пиши после праздников в аську, поболтаем на эту тему.
Всем доброго времени суток ! ) Не подскажете как сделать такую же панель как "Nero Search" Чтобы она так же была на панели задач. Заранее спасибо
Как перенести обработчик события? с unit1 на unit3? (Событие: procedure TThread.Execute и на какой unit кидать это: Code: TThread = class(TThread) protected procedure Execute; override; end; add: Формы Form3 не существует, был создан просто unit3
подскажите,нужно что бы при нажатии на карте(загруженную в TImage) на какой либо участок(тип страну) происходило действие такое то,вот вообще нету никаких зацепок,киньте хоть какую то идею