AGB  ·  Datenschutz  ·  Impressum  







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

Schleife abbrechen...

Ein Thema von horst · begonnen am 14. Nov 2003 · letzter Beitrag vom 14. Nov 2003
Antwort Antwort
Seite 2 von 3     12 3      
horst

Registriert seit: 1. Jul 2003
347 Beiträge
 
Delphi 2007 Professional
 
#11

Re: Schleife abbrechen...

  Alt 14. Nov 2003, 08:24
hai
danke. was ist inc(ndx);? ?
wenn ich kein Application.Processmessages verwende krieg ich den button nicht geklickt.
Update funktioniert auch nicht.
was kann ich sonst tun?
grüße...
  Mit Zitat antworten Zitat
ims

Registriert seit: 23. Jul 2003
Ort: Sirnach
157 Beiträge
 
Delphi 7 Professional
 
#12

Re: Schleife abbrechen...

  Alt 14. Nov 2003, 08:35
inc(variable) zählt die angegebene variable um 1 hoch, also z.B. von 2 auf 3...

application.processmessages wird benötigt, damit deine anwendung in rechenintensiven operationen weiterhin auf den benutzer reagiert.

Zitat:
Mit der Methode ProcessMessages können Sie eine Anwendung unterbrechen, sodass die Ereigniswarteschlange verarbeitet werden kann.
-> aus der OH
  Mit Zitat antworten Zitat
horst

Registriert seit: 1. Jul 2003
347 Beiträge
 
Delphi 2007 Professional
 
#13

Re: Schleife abbrechen...

  Alt 14. Nov 2003, 10:52
irgendwie klappt das nicht auch wenn ich den button anklicke:

habe es so gemacht:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  ndx: Integer;
begin
  ndx := 1;
  abbruch := true;
  while (ndx < StringGrid1.RowCount - 1) and (not abbruch) do
  begin
    inc(ndx);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  FileName: OleVariant;
  i, j: Integer;
  s: string;
begin
  Application.ProcessMessages;
  for i := 0 to StringGrid1.RowCount - 1 do
  begin
    s := StringGrid1.Cells[8, i];
    with TRegistry.Create do
    try
      RootKey := HKEY_CURRENT_USER;
      if OpenKey('\Software\VB and VBA Program Settings\FRITZ!fax\Print', True) then
      begin
        WriteString('Microsoft Word - test.doc', s);
      end;
    finally
      CloseKey;
      Free;
      WordApplication1.Connect;
      FileName := 'C:\test.doc';
      WordApplication1.Documents.Open(FileName, EmptyParam, EmptyParam, EmptyParam,
        EmptyParam, EmptyParam, EmptyParam, EmptyParam,
        EmptyParam, EmptyParam);
      WordDocument1.Close;
      WordApplication1.PrintOut;
      sleep(3000);
      WordDocument1.Disconnect;
    end;
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#14

Re: Schleife abbrechen...

  Alt 14. Nov 2003, 11:17
Zitat von horst:
irgendwie klappt das nicht auch wenn ich den button anklicke:
Hai horst,

so kann das auch nicht gehen.

Vergleiche mal meinen Code mit deinem
Delphi-Quellcode:
procedure Delay(msecs:integer);
var
  FirstTickCount:longint;
begin
  FirstTickCount:=GetTickCount;
  repeat
    Application.ProcessMessages; {allowing access to other controls, etc.}
  until ((GetTickCount-FirstTickCount) >= Longint(msecs));
end;

{****************************************************}

procedure TForm1.Button1Click(Sender: TObject);
var
  ndx : Integer;
  FileName: OleVariant;
  i, j: Integer;
  s: string;
begin
  Button1.Enabled := False;
  ndx := 1;
  abbruch := false;
  while (ndx < StringGrid1.RowCount - 1) and (not abbruch) do
    begin
      s := StringGrid1.Cells[8, i];
      with TRegistry.Create do
        try
          RootKey := HKEY_CURRENT_USER;
          if OpenKey('\Software\VB and VBA Program Settings\FRITZ!fax\Print', True) then
            begin
              WriteString('Microsoft Word - test.doc', s);
            end;
        finally
          CloseKey;
          Free;
          WordApplication1.Connect;
          Application.ProcessMessages;
          FileName := 'C:\test.doc';
          WordApplication1.Documents.Open(FileName, EmptyParam, EmptyParam, EmptyParam,
            EmptyParam, EmptyParam, EmptyParam, EmptyParam,
            EmptyParam, EmptyParam);
          WordDocument1.Close;
          WordApplication1.PrintOut;
          Delay (3000);
          WordDocument1.Disconnect;
          inc(ndx);
          Application.ProcessMessages;
        end;
    end;
end;

{****************************************************}

procedure TForm1.Button2Click(Sender: TObject);
begin
  abbruch := True;
  Button1.Enabled := True;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
horst

Registriert seit: 1. Jul 2003
347 Beiträge
 
Delphi 2007 Professional
 
#15

Re: Schleife abbrechen...

  Alt 14. Nov 2003, 11:34
wow...das funktioniert 100%.
ich verstehe aber nur die hälfte, könntest du evt. dazu ein paar kommentare zu schreiben?
Code:
procedure Delay(msecs:integer);
var
  FirstTickCount:longint;
begin
  FirstTickCount:=GetTickCount;
  repeat
    Application.ProcessMessages; {allowing access to other controls, etc.}
  until ((GetTickCount-FirstTickCount) >= Longint(msecs));
end;
meins war ja nicht nur ein wenig falsch.
nur ist es nun so, dass immer nur die erste nummer übergeben wird und nicht mehr alle anderen aus dem stringgrid.

kann den fehler nicht finden.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#16

Re: Schleife abbrechen...

  Alt 14. Nov 2003, 11:41
Zitat von horst:
ich verstehe aber nur die hälfte, könntest du evt. dazu ein paar kommentare zu schreiben?
Du hattest bei dir die Funktion Sleep verwendet. Diese hält den aktuelle Thread an. (Es werden also in dieser Zeit auch keine Nachrichten verarbeitet.

Die Funktion Delay die ich aus der Code-Library genommen habe macht nichts anderes als in einer Schleife zu waren bis seit der aktuellen "Zeit" (wird mit GetTickCount ermittelt) die angegebene Anzahl von millisekunden verstrichen ist. Wobei Zeit eigentlich falsch ist. Aber das steht in der OnlineHilfe.

Ups... mein Fehler.

  s := StringGrid1.Cells[8, i]; // das i durch ndx ersetzen!!!
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
horst

Registriert seit: 1. Jul 2003
347 Beiträge
 
Delphi 2007 Professional
 
#17

Re: Schleife abbrechen...

  Alt 14. Nov 2003, 11:44
funktioniert perfekt!
du hast mir damit sehr weiter geholfen, danke.
  Mit Zitat antworten Zitat
horst

Registriert seit: 1. Jul 2003
347 Beiträge
 
Delphi 2007 Professional
 
#18

Re: Schleife abbrechen...

  Alt 14. Nov 2003, 11:47
war zu voreilig...
in meinem stringrid sind 9 reihen
es werden nur 7 übergeben, fällt dir spontan was dazu ein?
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#19

Re: Schleife abbrechen...

  Alt 14. Nov 2003, 11:58
Hmmm... eigentlich nicht. Welche beiden werden denn nicht übergeben?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
horst

Registriert seit: 1. Jul 2003
347 Beiträge
 
Delphi 2007 Professional
 
#20

Re: Schleife abbrechen...

  Alt 14. Nov 2003, 12:02
die ersten beiden fehlten
damit geht es:
Delphi-Quellcode:
  ndx := 0;
  abbruch := false;
  while (ndx < StringGrid1.RowCount - 0) and (not abbruch) do
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 15:40 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