![]() |
Probleme mit Zeigern
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] );
Delphi-Quellcode:
Nun hab ich mit folgendem Code versucht beispielsweise den Header
PDispParams(Params)^.rgvarg[0].pbVal^ := 1; // Cancel flag = True
zu ändern bevor dieser als Request gesendet wird:
Delphi-Quellcode:
wenn ich das versuche springt aber wärend des kompilierens das cpu debug
PDispParams(Params)^.rgvarg[1].pvarVal^:= 'Language: de';
fenster auf =(, weiß jemand vielleicht wo der fehler steckt? |
Re: Probleme mit Zeigern
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 ?
|
Re: Probleme mit Zeigern
naja, also bei der cancel flag scheint das so zu funktionieren,
ich weiß allerdings nicht wie ich das testen könnte |
Re: Probleme mit Zeigern
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? |
Re: Probleme mit Zeigern
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. |
Re: Probleme mit Zeigern
also das array ist wie anfangs erwähnt wie folgt aufgebaut:
Zitat:
Delphi-Quellcode:
was mich aus dem mitgelieferten beispiel nun verwirrt ist das
procedure BeforeNavigate2(const pDisp: IDispatch; var URL: OleVariant; var Flags: OleVariant;
var TargetFrameName: OleVariant; var PostData: OleVariant; var Headers: OleVariant; var Cancel: WordBool); 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
Delphi-Quellcode:
wenn ich aber versuche z.b. die url zu ändern mit hilfe von
PDispParams(Params)^.rgvarg[0].pbVal^ := 1; // Cancel flag = True
Delphi-Quellcode:
dann meckert der debugger, andersrum kann ich aber über den selben zeiger
PDispParams(Params)^.rgvarg[5].pvarVal^:= 'http://www.domain.com';
die url ausgeben lassen |
Re: Probleme mit Zeigern
ich hab nun nochmal folgendes probiert:
Delphi-Quellcode:
das läuft dann zwar durch, aber im packet taucht davon nichts auf
var
Header: OleVariant; begin Header:= 'TestValue: empty'; PDispParams(Params)^.rgvarg[1].pvarVal^:= Header; :wiejetzt: |
Re: Probleme mit Zeigern
Wie sieht es außerhalb der IDE aus ? Was kommt da statt des Debug-Fensters ? Falls was anderes als "Access-Violation" kommt, bitte posten.
|
Re: Probleme mit Zeigern
Zitat:
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 |
Re: Probleme mit Zeigern
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 ?
|
Re: Probleme mit Zeigern
vorher hab ich nur mit php gearbeitet,
und nein es kommt keine fehlermeldung außerhalb der ide, ich denke mal die fehler werden ignoriert um einen absturz zu verhindern |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz