[delphi] mam blad przy CreateOleObject

[delphi] mam blad przy CreateOleObject
W3
  • Rejestracja:prawie 19 lat
  • Ostatnio:prawie 19 lat
0
Kopiuj
var
  OleApplication : Variant;
begin
 OleApplication := CreateOleObject('Excel.Application');
end;

kiedy probuje kompilowac wyswietla undelcared identifier ?
CO mozna poradzic ?

0

w deklaracji modulu do listy uses dodales modul ComObj?
np:

Kopiuj
unit ExcelServer;

interface
 uses Windows, Variants, <b>ComObj</b>, SysUtils;
0

Błąd przy CreateOleObject ale nie spowodowany brakami w uses !!! a czym cholera wie. Może ktoś pomoże. Bląd jaki wyskakuje to :
Variant does not reference an automation object.

Misiekd
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 12 lat
  • Postów:7923
0

może głupie pytanie ale masz excela zainstalowanego?


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij
0

Oczywiście że mam zainstalowanego excela. Nie o to chodzi.
Te same procedury korzystania z pliku excela w Delphi w jednym projekcie (nowo otwarym) działają bez problemów (ten sam komputer, to samo środowisko Delphi ale nowy projekt) a w projekcie (MDI) do któego chce to dodać przestaje działać i pokazuje ten błąd:

"Variant does not reference an automation object."

I kompletnie nie wiem o co chodzi, Jeśli ktoś sie z tym już spotkał to prosze o pomoc !

Misiekd
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 12 lat
  • Postów:7923
0

a daj zamiast
OleApplication : Variant;
OleApplication : OleVariant;


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij
0

Nie pomogło niestety. To chyba jakiś grubszy problem. Niestety spotkałem sie z nim pierwszy raz i pewnie dla tego jest grubszy. Pozdrawiam

Misiekd
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 12 lat
  • Postów:7923
0

masz w pliku projektu (.dpr) linię
Application.Initialize; ?


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij
0

MisiekD masz gg ?

MisiekD Dzięki wielkie za rozwiązanie problemu. Brakowało mi tej linii. Zaoszczedziłeś mi kupe czasu w szukaniu problemu bo kwestie excela chce dodać do dość rozbudowanego programu i czekalo mnie bardzo dużo kopania w źródłach a tak sprawa sie wyjaśniła
Dzięki wielkie :)))))))))))

MisiekD nie szukasz czasem pracy tak sobie dorobić przy programowaniu w Delphi?
Tak w ogóle wisze Ci zgrzewe :). Pozdrawiam

Misiekd
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 12 lat
  • Postów:7923
0

dodanie tej linijki powoduje wykonanie się sekcji initialization modułów dodanych do Twojego projektu, w tym winowajcy ComObj

co do dorobienia to wyślij mi swoje gg na PW to zobaczymy co w tej sprawie będzie można zrobić :)


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij
Morris
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 miesiące
  • Postów:36
0
Misiekd napisał(a)

dodanie tej linijki powoduje wykonanie się sekcji initialization modułów dodanych do Twojego projektu, w tym winowajcy ComObj

Że jak? Coś pomyliłeś. Sekcja "initialization" każdego modułu wykonuje się niejako automatycznie (dba o to kompilator).

W Application.Initialize moż byc co najwyżej (m.in.) wywołane CoInitialize() lub OleInitialize(), które to wpływa na możność tworzenia obiektów OLE Automation.


M.O.R.R.I.S.: Mechanical Obedient Replicant Responsible for Infiltration and Sabotage
morris#rarlab*com
Misiekd
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 12 lat
  • Postów:7923
0
Morris napisał(a)

Że jak? Coś pomyliłeś. Sekcja "initialization" każdego modułu wykonuje się niejako automatycznie (dba o to kompilator).

no fakt, masz rację - trochę przekolorowałem

W Application.Initialize moż byc co najwyżej (m.in.) wywołane CoInitialize() lub OleInitialize(), które to wpływa na możność tworzenia obiektów OLE Automation.

a tu nie dokońca tak jest bo Application.Initialize tak na prawdę wywołuje procedurę (bezparametrową) InitProc, która w "czystej" aplikacji wskazuje na nil i jest pomijana, czyli na dobrą sprawę nie robi nic. Pod InitProc można podstawić własną procedurę, niektóre unity (jak np. ComObj) podstawiają tam własną procedurę inicjalizującą (w tym konkretnym przypadku) obiekty COM. Ponieważ procedura InitProc może być tylko jedna stosowana jest sztuczka, która polega na zapamiętaniu "starej" procedury a następnie podstawieniu własnej. W ciele naszej procedury natomiast sprawdza się, czy InitProc <> nil i jeśli tak to wywołuje się ją. Pozwala to na podpięcie się pod InitProc większej liczby procedur.
Sama InitProc (o ile Application.Initialize jest na swoim miejscu) wywoływana jest po wykonaniu wszystkich poleceń z wszystkich modułów z sekcji initialization a przed właściwym startem aplikacji.


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij
P2
  • Rejestracja:ponad 18 lat
  • Ostatnio:ponad 17 lat
0

Bynajmniej pomogło nawet w dwóch sprawach:

  1. CreateOleObject tworzy sie bez problemu.
  2. oraz w błędnej obsłudze jednego z modemów:
    Pewien komponent nie chciał współpracować z jednym z modemów. Z innymi działał ok. A z tym jednym po wysłaniu komendy ATDT... kończyła sie gadka czyli nie dostawalem już żadnego zdarzenia o odebraniu czegokolwiek (nawet BUSY czy NO DIALTONE). Po dodaniu lini z initialize wszystko ok program współpracuje również z tym modem.
    Swoją drogą dziwne że te same procedury działały z innymi modemami, a z tym jednym nie chciały. A po dodaniu tej linii działa również i ten modem hmmmm ... ? Może zbieg okolicznośći.

Nie wiem dla czego nie było tej lini w programie. Prace nad programem przejąłem po kimś i co jakiś czas natrafiam na takie niespodzianki.
Pozdrawiam i dzieki za pomoc

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)