AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit Zeigern

Ein Thema von endeffects · begonnen am 6. Aug 2004 · letzter Beitrag vom 6. Aug 2004
Antwort Antwort
Seite 1 von 2  1 2      
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#1

Probleme mit Zeigern

  Alt 6. Aug 2004, 18:36
Hallo,

ich hab ein Problem mit einem Zeiger, und zwar möchte ich
in einem IExplorer Plugin z.B. Header den abändern.

ich hab mich dafür an einer routine orientiert die
die flag zum abrechen des requests von der Methode BeforeNavigate2
auf true setzt:

Delphi-Quellcode:
      void BeforeNavigate2(
        IDispatch *pDisp,          --> rgvarg[6]
        VARIANT *URL,          --> rgvarg[5]
        VARIANT *Flags,          --> rgvarg[4]
        VARIANT *TargetFrameName, --> rgvarg[3]
        VARIANT *PostData,          --> rgvarg[2]
        VARIANT *Headers,          --> rgvarg[1]
        VARIANT_BOOL *Cancel          --> rgvarg[0]
      );
      PDispParams(Params)^.rgvarg[0].pbVal^ := 1; // Cancel flag = True Nun hab ich mit folgendem Code versucht beispielsweise den Header
zu ändern bevor dieser als Request gesendet wird:

PDispParams(Params)^.rgvarg[1].pvarVal^:= 'Language: de'; wenn ich das versuche springt aber wärend des kompilierens das cpu debug
fenster auf =(, weiß jemand vielleicht wo der fehler steckt?
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: Probleme mit Zeigern

  Alt 6. Aug 2004, 18:49
Das ^ ist der Inhalt des Zeigers. Bei dir kommt das aber 2mal vor. Bist du dir sicher, daß das erste ^ Zugriff auf das zweite ^ hat ?
Gruß
Hansa
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#3

Re: Probleme mit Zeigern

  Alt 6. Aug 2004, 19:03
naja, also bei der cancel flag scheint das so zu funktionieren,
ich weiß allerdings nicht wie ich das testen könnte
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#4

Re: Probleme mit Zeigern

  Alt 6. Aug 2004, 19:06
die gesendete url frag ich ja auch ohne probleme wie folgt ab:
PDispParams(Params)^.rgvarg[5].pvarVal^

liegt es vielleicht daran das ich möglicherweise einen
overrun für den reservierten speicher erzeuge?
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

Re: Probleme mit Zeigern

  Alt 6. Aug 2004, 19:15
1. Frage : was ist ein Overrun ?
2. Frage : bist du dir sicher zu wissen, was du da genau machst und was ein Pointer ist ?

Sehe ich das richtig, daß da noch ein Array im Spiel ist ? Ohne genaue Deklarationen wird wohl keiner da helfen können.
Gruß
Hansa
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#6

Re: Probleme mit Zeigern

  Alt 6. Aug 2004, 19:24
also das array ist wie anfangs erwähnt wie folgt aufgebaut:

Zitat:
void BeforeNavigate2(
IDispatch *pDisp, --> rgvarg[6]
VARIANT *URL, --> rgvarg[5]
VARIANT *Flags, --> rgvarg[4]
VARIANT *TargetFrameName, --> rgvarg[3]
VARIANT *PostData, --> rgvarg[2]
VARIANT *Headers, --> rgvarg[1]
VARIANT_BOOL *Cancel --> rgvarg[0]
);
die BeforeNavigate2 Methode ist wie folgt deklariert

Delphi-Quellcode:
procedure BeforeNavigate2(const pDisp: IDispatch; var URL: OleVariant; var Flags: OleVariant;
                              var TargetFrameName: OleVariant; var PostData: OleVariant;
                              var Headers: OleVariant; var Cancel: WordBool);
was mich aus dem mitgelieferten beispiel nun verwirrt ist das
man die flag zum canceln des request ändern kann,
das aber bei jedem anderen parameter beim compilieren
der debugger aufgerufen wird

soll heißen wenn ich folgendes in den code einbaue wird der
request nicht gesendet
PDispParams(Params)^.rgvarg[0].pbVal^ := 1; // Cancel flag = True wenn ich aber versuche z.b. die url zu ändern mit hilfe von
PDispParams(Params)^.rgvarg[5].pvarVal^:= 'http://www.domain.com'; dann meckert der debugger, andersrum kann ich aber über den selben zeiger
die url ausgeben lassen
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#7

Re: Probleme mit Zeigern

  Alt 6. Aug 2004, 19:49
ich hab nun nochmal folgendes probiert:

Delphi-Quellcode:
var
  Header: OleVariant;
begin
  Header:= 'TestValue: empty';
  PDispParams(Params)^.rgvarg[1].pvarVal^:= Header;
das läuft dann zwar durch, aber im packet taucht davon nichts auf

  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#8

Re: Probleme mit Zeigern

  Alt 6. Aug 2004, 19:59
Wie sieht es außerhalb der IDE aus ? Was kommt da statt des Debug-Fensters ? Falls was anderes als "Access-Violation" kommt, bitte posten.
Gruß
Hansa
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#9

Re: Probleme mit Zeigern

  Alt 6. Aug 2004, 20:15
Zitat:
wenn ich aber versuche z.b. die url zu ändern mit hilfe von
PDispParams(Params)^.rgvarg[5].pvarVal^:= 'http://www.domain.com';
dann meckert der debugger, andersrum kann ich aber über den selben zeiger
das passiert nur solange ich das plugin über regsvr32 registriert habe,
wenn ich die dll nun nach dem kompilieren registriere dann werden
die änderungen die durch das plugin vorgenommen werden soll völlig ignoriert

in beiden fällen, ob nun über var header: olevariant oder beim direkten ändern
werden die änderungen auch außerhalb der ide ignoriert
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#10

Re: Probleme mit Zeigern

  Alt 6. Aug 2004, 20:51
Kommt keine Fehlermeldung außerhalb der IDE ? Würde mich allerdings wundern. Noch eine Frage : hast du vorher eventuell mit C oder Javascript schon gearbeitet ? Also vor Delphi ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz