Формулы Excel структурной распечатки программы?

Python:

можно посмотреть на реализацию Скрученный реактор , который является, вероятно, лучшей реализацией для цикла событий в Python. Реакторы в Скрученном являются реализациями интерфейса, и можно определить реактор типа для выполнения: выберите, epoll, kqueue (все на основе c API с помощью тех системных вызовов), существуют также реакторы на основе QT и инструментариев GTK.

А простая реализация должна была бы использовать выбор:

#echo server that accepts multiple client connections without forking threads

import select
import socket
import sys

host = ''
port = 50000
backlog = 5
size = 1024
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((host,port))
server.listen(backlog)
input = [server,sys.stdin]
running = 1

#the eventloop running
while running:
    inputready,outputready,exceptready = select.select(input,[],[])

    for s in inputready:

        if s == server:
            # handle the server socket
            client, address = server.accept()
            input.append(client)

        elif s == sys.stdin:
            # handle standard input
            junk = sys.stdin.readline()
            running = 0

        else:
            # handle all other sockets
            data = s.recv(size)
            if data:
                s.send(data)
            else:
                s.close()
                input.remove(s)
server.close() 

7
задан Lance Roberts 18 September 2009 в 21:48
поделиться

2 ответа

Этот код VBA не получит награды, но он подходит для быстрого просмотра типовые формулы. Он просто делает то, что вы делали бы с скобками или разделителями вручную. Вставьте его в модуль кода и вызовите из командной строки окна VBA. (РЕДАКТИРОВАТЬ: мне недавно пришлось взглянуть на некоторые формулы, и я улучшил то, что было здесь, из моего исходного ответа, поэтому я вернулся и изменил его.)

Public Function ppf(f) As String
    Dim formulaStr As String

    If IsObject(f) Then
        Debug.Assert TypeOf f Is Range

        Dim rng As Range
        Set rng = f

        formulaStr = rng.Formula
    Else
        Debug.Assert VarType(f) = vbString

        formulaStr = f
    End If

    Dim tabs(0 To 99) As Long

    Dim tabNum As Long
    tabNum = 1

    Dim tabOffset As Long

    Dim i As Long
    Dim c As String
    For i = 1 To Len(formulaStr)
        c = Mid$(formulaStr, i, 1)

        If InStr("({", c) > 0 Then
            ppf = ppf & c

            tabNum = tabNum + 1
            tabs(tabNum) = tabs(tabNum - 1) + tabOffset + 1
            tabOffset = 0

            ppf = ppf & vbCrLf & Space(tabs(tabNum))
        ElseIf InStr(")}", c) > 0 Then
            tabNum = tabNum - 1
            tabOffset = 0

            ppf = ppf & c & vbCrLf & Space(tabs(tabNum))
        ElseIf InStr("+-*/^,;", c) > 0 Then
            tabOffset = 0

            ppf = ppf & c & vbCrLf & Space(tabs(tabNum))
        Else
            ppf = ppf & c

            tabOffset = tabOffset + 1
        End If
    Next i
End Function

Если вы назовете это так:

?ppf([q42])

вы этого не сделаете. нужно беспокоиться о том, чтобы избежать двойных кавычек и так далее. Вы получите следующий результат:

AC6+
AD6+
(
 IF(
    H6="Yes",
    1,
    IF(
       J6="Yes",
       1,
       0)
    )
 )
+
IF(
   X6="Yes",
   1,
   0)

Вы также можете вызвать его с помощью простой строки.

3
ответ дан 6 December 2019 в 15:24
поделиться

Вот коммерческое решение, которое может вам подойти:

http://www.uts.us.com/ItemDetails.asp?ItemID=1100-40-0000-00

Судя по всему, доступна пробная версия.

1
ответ дан 6 December 2019 в 15:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: