AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Speicherbalken

Ein Thema von BAMatze · begonnen am 11. Dez 2008 · letzter Beitrag vom 2. Feb 2009
Antwort Antwort
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#1

Re: Speicherbalken

  Alt 11. Dez 2008, 08:23
Habe hier eine Möglichkeit gerade erstellt, die zwar nicht wirklich den genauen Speicherzustand wiederspiegelt, aber für den Benutzer ist das ja nicht wirklich interessant. Für mich ist es aber eine Möglichkeit, die Speicherzeit zu überbrücken. habe die Speicherprozesse in eine extra Form kopiert und setze vor dem Speichern eine Variable auf falsch. Wenn das Speichern vorbei ist, wird diese Variable auf wahr gesetzt. Nebenbei läuft ein Timer, der allerdings unabhängig von dem Speichervorgang den ProgressBar füllt. Das komplette Befüllen ist ihm aber erst erlaubt, wenn die Variable auf wahr (d.h. der Speichervorgang ist wirklich abgeschlossen) umgeschaltet ist. Hier mal den Quellcode meiner ebend beschriebenen Lösung:

Delphi-Quellcode:
unit Speichern;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, EFPI_Steuerungsunit1, StdCtrls, ExtCtrls, ComCtrls;

type
  TForm7 = class(TForm)
    Label1: TLabel;
    ProgressBar1: TProgressBar;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form7: TForm7;
  Fortschrittsanzeige: boolean;

implementation

{$R *.dfm}

procedure TForm7.FormCreate(Sender: TObject);
begin
  randomize;
  Form1.Enabled := true;
  Fortschrittsanzeige := false; // Variable anhand derer festgestellt wird, ob der Speichervorgang beendet ist
  Excel.Worksheets[1].SaveAS('D:\Tischsteuerung\Steuerungsprogramm Version 1.103\Sensoren.xls'); { <---------- hier gibt es noch einen Fehler!!!}
  Form1.OleContainer1.DestroyObject; {Objekt muss aktualisiert werden sonst werden die Änderungen nach dem Schliesen des OleContainers nicht sichtbar}
  Form1.OleContainer1.CreateObjectFromFile('D:\Tischsteuerung\Steuerungsprogramm Version 1.103\Sensoren.xls', false); // neu laden
  Fortschrittsanzeige := true;
end;

procedure TForm7.Timer1Timer(Sender: TObject);
var iTemp: integer;
begin
  //Fortschrittsanzeige wird nicht voll befüllt, wenn Speichern nicht abgeschlossen ist
  if (Fortschrittsanzeige = False) and (ProgressBar1.Position < 90) then
    begin
      iTemp := random(5);
      ProgressBar1.Position := Progressbar1.Position + iTemp;
    end;
  //Fortschrittsanzeige kann vollständig befüllt werden, wenn Speichern abgeschlossen ist
  if (Fortschrittsanzeige = true) then
    begin
      iTemp := random(10);
      ProgressBar1.Position := Progressbar1.Position + iTemp;
    end;
  //wenn Progressbar vollständig befüllt ist, dann soll die Form wieder verlassen werden
  if (ProgressBar1.Position >= 100) then
    begin
      ProgressBar1.Position := 0;
      Form1.Enabled := false;
      close;
    end;
end;

end.
Eine kleine Schwachstelle hat es leider noch. Wenn ich den Speichervorgang
   Excel.Worksheets[1].SaveAS('D:\Tischsteuerung\Steuerungsprogramm Version 1.103\Sensoren.xls'); in der ursprünglichen Form starte funktioniert es wunderbar. In der neuen Form bekomme ich leider immer eine Fehlermeldung. Vieleicht kann mir jemand sagen, woran dies liegt.

Fehlermeldung: "Exception-Klasse EVariantInvalidOpError mit Meldung 'Ungültige Variantenoperation."

Vielen Dank
BAMatze
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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