AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi [RAS] Verbindungsaufbau abbrechen
Thema durchsuchen
Ansicht
Themen-Optionen

[RAS] Verbindungsaufbau abbrechen

Ein Thema von Mazel · begonnen am 24. Mär 2007 · letzter Beitrag vom 30. Mär 2007
Antwort Antwort
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#1

[RAS] Verbindungsaufbau abbrechen

  Alt 24. Mär 2007, 14:56
Hallo,

ich stelle mit Hilfe einer Ras-Funktion eine Internetverbindung her. Nun ist es aber so, dass manchmal, aus welchen Gründen auch immer, keine Verbindung hergestellt werden kann. Dies merke ich daran, dass ich lange Zeit, etwa 20 Sekunden, warten muss. Nun weiss ich aber aus Erfahrung, dass, wenn schon nach 5 Sekunden keine Verbindung besteht, ich die Aktion abbrechen könnte, ich aber nicht weiss wie.

Hier ist mein Code zum Aufbau der Verbindung:
Delphi-Quellcode:
{--[Dial]----------------------------------------------------------------------}

function Dial(Entry: String): Boolean;
var
 RasDialParams : TRasDialParams;
 Connection : DWORD;

begin
 RasHangUp(Main.ConnectionID); // Main-ConnectionID ist die Verbindungs-ID
 FillChar(RasDialParams, SizeOf(RasDialParams), 0);
 RasDialParams.dwSize := SizeOf(RasDialParams);
 StrPCopy(RasDialParams.szEntryName, Entry);
 StrPCopy(RasDialParams.szUserName, '*****');
 StrPCopy(RasDialParams.szPassword, '*****');
 Main.ConnectionID := 0;
 Connection := RasDial(nil, nil, RasDialParams, 0, nil, Main.ConnectionID); // hier wird Verbingung aufgebaut
 If Connection = 0 then Result := True
 Else
  begin
   RasHangUp(Main.ConnectionID);
   Result := False;
  end;
end;
Nun habe ich schon versucht mit RasHangUp(Main.ConnectionID); während der Aktion den Aufbau zu unterbrechen, war aber nur aus Hilflosigkeit geschehen, da ich keinen anderen Weg weiss. Darum hoffe ich, jemand hier zu finden, der mir einen Rat geben könnte.

Gruß
Mazel
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#2

Re: [RAS] Verbindungsaufbau abbrechen

  Alt 27. Mär 2007, 13:34
Keiner eine Idee?
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von hincapie
hincapie

Registriert seit: 24. Mär 2005
200 Beiträge
 
Delphi 5 Professional
 
#3

Re: [RAS] Verbindungsaufbau abbrechen

  Alt 27. Mär 2007, 19:59
Also ich verwende die Komponente RASComm (leider keine ahnung mehr, wo ich die her habe, ist schon ein paar Jährchen her) und frage den Parameter RasConnState ab:
Delphi-Quellcode:
procedure TsMain.rasCommDial(Sender: TObject; RASConnState, ErrorCode: Longint;
  status, device, modem: string);
begin
  StatusBar1.Panels[0].Text := 'Gerät: ' + Modem;
  Log(status);
  if (errorcode <> 0) then
  begin
    Log(rasComm.RASGetError(errorCode)+'['+inttostr(errorcode)+']');
    Dialerror := errorcode;
    DialingIsDone := true;
    rasComm.RASHangUp;
    exit;
  end;
  if (RasConnState = RASCS_DISCONNECTED) then
  begin
    DialError := 0;
    DialingIsDone := true;
    rasComm.RASHangUp;
    ...
  end;
So etwas müßte es bei Deinen Ras-Funktionen doch eigentlich auch geben?
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#4

Re: [RAS] Verbindungsaufbau abbrechen

  Alt 28. Mär 2007, 10:12
Hallo,

danke erstmal.

Ich vermute, dass es sowas gibt, aber ich wusste nicht nach was ich suchen soll. Ich habe nach allen möglichen Funktionen gesucht aber nicht nach RasConnState.

Ich schau mir die RAS-Funktionen heute Nachmittag nochmal an (bin grad in der Schule). Ich werde sicher etwas finden.

Gruß
Mazel
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#5

Re: [RAS] Verbindungsaufbau abbrechen

  Alt 28. Mär 2007, 14:07
Ich habe eben mal nachgeschaut, RasConnectionState ist vorhanden, jedoch bringt mir das momentan nicht viel, weil ich nicht den Verbindungsaufbau abfangen kann. Also ich kann zwar den Status abfragen, aber mein Programm reagiert erst wieder, nachdem entweder Verbindung oder keine Verbindung möglich ist.
Ich habe schon an verschiedenen Stellen Application.ProcessMessages eingebaut um den Button in der Form zu betätigen, leider ohne Erfolg.
Die Funktion RasDial ist also das Problem, an die ich nicht heran komme.

Gruß
Mazel
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von hincapie
hincapie

Registriert seit: 24. Mär 2005
200 Beiträge
 
Delphi 5 Professional
 
#6

Re: [RAS] Verbindungsaufbau abbrechen

  Alt 28. Mär 2007, 16:33
Also, mit dieser Routine wird der markierte Eintrag aus der RasList(TListView) angewählt:
Delphi-Quellcode:
procedure TsMain.DialEntries;
begin
  // Logbuch leeren und einblenden.
  LogBuch.items.clear;
  SwitchToExplorer(false);
  DialingIsDone := false;
  Dialerror := 0;
  sMain.PlayWaveSound('ERING');
  repeat
    Log('- Wähle: '+RasList.ItemFocused.Caption);
    rasComm.RASDialEntry(RasList.ItemFocused.Caption);
    repeat
      application.processmessages;
    until DialingIsDone;
    if (Dialerror <> 0) then
    begin
      DialIngIsDone := false;
      Break;
    end;
  until DialingIsdone;
  if (Dialerror <> 0) then
  begin
    ShowMessage('Es konnte keine Verbindung hergestellt werden');
    SwitchToExplorer(true);
  end;
end;
Wenn ich den Prozess des Wählens unterbrechen will, betätige ich den Stop-Button:
Delphi-Quellcode:
procedure TsMain.StopBtnClick(Sender: TObject);
begin
  Screen.Cursor := crHourglass;
  // Parallelprozeß abbrechen.
  DialError := 0;
  DialingIsDone := true;
  // Verbindung abbrechen.
  rasComm.RASHangUp;

  Log('Verbindung wird getrennt');
  BulbOff(true);
  LogBuch.refresh;
  ShowMessage('Verbindung wurde getrennt.');
  SwitchToExplorer(true);
  ...
end;
Entscheidend ist dabei die Variable DialingIsDone: wenn ich die auf True setze, wird das Einwählen sofort abgebrochen.
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#7

Re: [RAS] Verbindungsaufbau abbrechen

  Alt 28. Mär 2007, 18:07
Ich habe versucht, meinen Code so umzubauen, dass er deinem ähnelt und so eventuell funktioniert.
Leider ohne Erfolg.
Das Programm wartet leider solange, bis RasDial ein Wert zurück liefert. Daher kann ich in diesem Zeitabschnitt nichts mit der Form unternehmen.

Dein rasComm.RASDialEntry würde mein RasDial entsprechen, nun verstehe ich nicht, warum bei mir solange auf ein Wert gewartet wird. Bei dir scheint es so zu sein, dass deine Repeat-Until Schleife sofort ausgeführt wird und wenn DialingIsDone gesetzt ist, die Schleife verlassen wird.
Soweit komme ich wie geschrieben nicht, die Schleife wird bei mir erst nachdem RasDial ausgeüfhrt wurde abgehandelt, was mir aber aufgrund des Themas nichts nützt.
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von hincapie
hincapie

Registriert seit: 24. Mär 2005
200 Beiträge
 
Delphi 5 Professional
 
#8

Re: [RAS] Verbindungsaufbau abbrechen

  Alt 28. Mär 2007, 20:59
Hhhmmm, ich habe mir mein Programm noch einmal genauer angesehen und muss mich daher etwas korrigieren:
Wenn ich den Stop-Button betätige, dauert es während des Verbindungsaufbaus doch etwas länger, bis das Einwählen abgebrochen wird, bzw. muss ich manchmal nach dem Beenden des Wählvorgangs noch einmal den Button drücken, da das Programm vorher offenbar nicht reagiert hat.

Ich würde diese Verzögerung aber der RAS-Api zuweisen, da kann man meiner Ansicht nach programmiertechnisch nicht viel ändern.
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#9

Re: [RAS] Verbindungsaufbau abbrechen

  Alt 30. Mär 2007, 07:01
Dann wird es wohl so bleiben müssen wie es ist. Ich kann sicher noch etwas die Zeit verkürzen aber mehr ist wahrscheinlich wirklich nicht möglich.

Ich danke dir trotzdem für deinen Mühen hincapie

Gruß
Mazel
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:11 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