Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wie viel wurde schon geschrieben? Progressbar (https://www.delphipraxis.net/37787-wie-viel-wurde-schon-geschrieben-progressbar.html)

Selecta 10. Jan 2005 16:04


Wie viel wurde schon geschrieben? Progressbar
 
hi all
Bis jetzt bin ich sehr gut mit der Board suche durchgekommen. wenn ihr einen eintrag zur Lösung von meinem Problem findet, lasst es mich wissen ;).

Ich schicke jeweils immer eine Zeile aus einer .txt durch die serielle Schnittstelle. (USB/RS232 ;))
Nun würde ich gerne durch eine Progressbar Anzeige die Dauer der Übertragung anzeigen lassen.
Nur wie bekomme ich die Grösse der gesendet Daten?
Da ich es über writeln mache. Mit Blockwrite wäre es ja kein Problem.

Ein bisschen Code dazu :-)
Delphi-Quellcode:
begin
  SerialPortNG1.ClearRxDQueue; //löscht die Windowsempfangsqueue
  // Damit nur die aktuellsten Werte ausgelesen werden
  pause (500); // *Gähn* auf Queue warten
  abort := false;
  try
    Assignfile(f, NameEdit.Text);
    Reset(f);
  except
    on EinOutError Do
      ShowMessage('Datei Öffnen fehlgeschlagen');
    end;
  Fileisopen := true;
  FSize := FileSize(f);
  AbortBtn.Enabled := true;
  SendBtn.Enabled := false; //Disable the Send Button prevent multiple Sending
  ReadLn(f, Info); //First Entry Info?
  info := Copy(info,1,4);
  Progressbar1.Max := FSize;
  while not EOF(f) or abort = true do
  begin
    if not (info = 'Info') then
    begin
      Readln(f, Sendbuffer);
      SerialPortNG1.SendString(sendBuffer + #13#10); // Send String
      while SerialPortNG1.SendInProgress do
      begin
        Application.ProcessMessages;
      end;
      ifread := Copy(sendBuffer,3,1); //Must be Read??
      if (ifread = '1') then
      begin
        pause(20);
        read := SerialPortNG1.ReadNextClusterAsString();
        rSlave := Copy(read,1,2);
        rData := Copy(read,13,4);
        rAddress := Copy(read,9,4);
        ListenZeile := (rSlave+'                       '+rAddress+'                    '+rData);
        ListBox2.Items.Add(ListenZeile);
      end;
    end //if Info
    else
    begin
      info := ':-)';
    end;

  end; //While
  CloseFile(f);
end;
Naja hab mit delphi/programmieren erst angefangen :duck:
Wenn wir schon dabei sind, euch ist sicher auf der 5. letzten Zeile das ":-)" aufgefallen, hat jemand ne andere Idee? :-D

Ich hoffe ich habe es verständlich formuliert :|
Danke für die Hilfe
grz Selecta

IngoD7 10. Jan 2005 16:29

Re: Wie viel wurde schon geschrieben? Progressbar
 
Zitat:

Zitat von Selecta
Nur wie bekomme ich die Grösse der gesendet Daten?

Kann sein, dass ich jetzt irgendwas nicht verstanden habe ....

Du hast doch deine jeweils eingelesene Textzeile in einem String. Dessen Länge kannst du doch bestimmen (length).

Selecta 10. Jan 2005 16:36

Re: Wie viel wurde schon geschrieben? Progressbar
 
Jep, das stimmt schon.
aber mit Filesize() bekomme ich ja die Grösse in Byte an.
und dann kann ich ja die länge nicht gebrauchen, oder schon ?

Luckie 10. Jan 2005 16:37

Re: Wie viel wurde schon geschrieben? Progressbar
 
Nun ja, ein Byte entspricht einem Zeichen.

Selecta 10. Jan 2005 16:49

Re: Wie viel wurde schon geschrieben? Progressbar
 
nun ja, wenn das so ist.
DANKE
Die gelesene Zeile + 2 für das CR und LF.
kewl, dankeschön

Vielleicht könnt ihr mir noch mehr helfen.
Es Soll ein Pfadname eingeben und eine Datei mit der Endung .txt erzeugt werden.
Wenn der User jetzt aber keine Endung oder eine andere Endung angibt.
Soll die Endung auf .txt geändert werden.

Delphi-Quellcode:
begin
  if nameedit.Text = '' then
  begin
    Showmessage('No Path in Makroname:');
    exit;
  end;
  Fileext := ExtractFileExt(nameedit.Text);
  if not (Fileext = '.txt') then
  begin
    Changefileext(nameedit.Text,'.txt');
    if Fileext = '' then
    nameedit.text := nameedit.text + '.txt';
  end;
Bei ExtractFileExt bekomme ich aber nichts zurück :(

Ultimator 10. Jan 2005 17:01

Re: Wie viel wurde schon geschrieben? Progressbar
 
Delphi-Quellcode:
If ExtractFileExt(Editname.Text) <> '' then
 Blabla.SaveToFile(EditName.Text)
else
 BlaBla.SaveToFile(EditName.Text+'.txt');
Und nächstes mal: Neue Frage, neuer Thread ;-)

IngoD7 10. Jan 2005 17:06

Re: Wie viel wurde schon geschrieben? Progressbar
 
Zitat:

Zitat von Selecta
Bei ExtractFileExt bekomme ich aber nichts zurück :(

Dann war wohl keine Erweiterung vorhanden.

Ansonsten: Neue Frage, neuer Thread.

Selecta 10. Jan 2005 17:07

Re: Wie viel wurde schon geschrieben? Progressbar
 
danke
Es gibt schon viele threads und solange der thread noch in den 10 neusten ist, wird sicher einer mit genügend Kentnissen drüberstolpern und mir eine lösung geben :-D

Luckie 10. Jan 2005 17:13

Re: Wie viel wurde schon geschrieben? Progressbar
 
Nein. Erstell bitte für jede neue Farge einen neuen Thread. Erstens damit es hier nicht drunter und drüber geht und zweitens damit das Topic noch was mit dem besprochenen Problem zu tun hat und so die Suche erleichterent, wenn man was bestimmtes sucht.

Aus diesem Grund:
G E S C H L O S S E N


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:37 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