W pliku pipe_ctrl.h zabrakło definicji, którą dodałem:
- Kod: Zaznacz cały
#define PIPE_CHILD_PROCESS_CLOSE_ERROR -13
No tak w archiwum nie umieściłem pliku nagłówkowego z dodaną definicją - moja wina, przepraszam!
Kolejna sprawa, w kodzie Twojego programu dostrzegłem pewien błąd-nie-bląd, nie jestem pewien czy nie wywoła to błędu
No tak błąd nie błąd

Błąd oczywiście będzie spowodowany tylko w momencie kiedy wskaźnik pc nie będzie NULL oraz będzie pokazywał na obszar pamięci który nie jest zaalokowany obiektem klasy pipeCtrl. Dlatego w każdym miejscu gdzie obiekt jest usuwany, a nowy nie jest tworzony po użyciu operatora delete przypisuję pc = NULL tak aby w innych miejscach kodu wiedzieć czy obiekt jest zaalokowany czy nie. Oczywiście jak wiesz, zawsze można nie używać operatora delete tylko tworzyć nowy obiekt, jednak po długim, nieprzerwanym działaniu programu doprowadzi to do wycieku pamięci.
Programik zawarty w Unit1.cpp ma tylko na celu jak korzystać z metod klasy, natomiast indywidualne rozwiązania są dowolne. Ja na przykład wybierając takie jak przedstawione muszę być konsekwentny i po każdym zwalnianiu pamięci ustawiam pc = NULL; - można też inaczej. Jeżeli bym tego nie zrobił to w tej funkcji pojawi się wyjątek.
Co do funkcji readpipe, to owszem można ją dopisać do klasy, nie ma problemu. Tylko tak jak już pisałem, kod był trochę przerobiony na cele demonstracyjne i przerobiłem tylko co było konieczne. Pierwotnie biblioteka wyglądała i działała troszkę inaczej, ale co jest ważne, jednym z wymagań była jej uniwersalność i niezależność od środowiska, natomiast TMemo, czy klasa TString czy TStringList, są typowe dla BCB. Np. Wcześniej wszystkie stringi były reprezentowane jako char* no i ten wskaźnik do funkcji. Definiowane funkcji
readpipe mijało się wtedy z celem. Oczywiście ktoś może powiedzieć że można ją było zadeklarować jako funkcję wirtualną, owszem, ale po co wprowadzać niepotrzebne dziedziczenie do tak prostego interfejsu?
Pozdr!
If a machine is expected to be infallible, it cannot also be intelligent.
-- A.Turing