Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Zuweisungen Variablen, Array? (https://www.delphipraxis.net/32620-zuweisungen-variablen-array.html)

skaven 26. Okt 2004 10:43


Zuweisungen Variablen, Array?
 
Hallo zusammen, erst mal einen wunderschönen Dienstag, haben es ja bald geschafft, das We ist zum greifen nah
Think positiv.

Folgendes Problem, habe ien Programm geschrieben das einen Com Port ausliest und mir einen Zahlenwert aus einem String ausschneidet.

Es werden mehrere Zahlenwerte ausgelesen und ich würde diese gerne in variablen speichern, weil ich die letzten beiden auf >=10 vergleichen möchte um eine schleife zu beenden.

Habe gedacht das ich diese mit einem array versuche, aber leider funktioniert das nicht so. Irgendwo ist in dem array eine falsche Zuweisung.

Vielleicht habe ich das acuch falscg generiert, keine Ahnung, HILFE

Delphi-Quellcode:
procedure TForm1.DateieinlesenClick(Sender: TObject);
var
   Liste : TStringList;
   i,x, data_length, firstnumber, lastnumber, result, value, differenzwert : Integer;
   hilftext, data, filename, last_value : String;
   prdwerte : array of integer;
   begin
   liste :=tstringlist.create;
  if OpenDialog1.Execute then         { Dialog zum Dateiöffnen anzeigen }
  begin
    filename := OpenDialog1.FileName;
   try
    Liste.LoadFromFile(filename);
    for i := 0 to Liste.Count-1 do
      begin

      {comport komplett leerlesen}
      while (ApdComPort1.CharReady) do {ComPort wird komplett ausgelesen}
            begin
             Data := data+ApdComPort1.GetChar;  {ComPort wird ausgelesen}
            end;
       data := '';

       apdcomport1.putstring(Liste[i]);    {Übermittelt Daten aus Com1}
       apdcomport1.putstring(#13);

       { Bestätigung des ersten Befehles loeschen }
       while (pos('>',data) = 0) do
          while (ApdComPort1.CharReady) do {ComPort wird komplett ausgelesen}
            begin
             Data := data+ApdComPort1.GetChar;  {ComPort wird ausgelesen}
            end;
       data := '';
       repeat
         apdcomport1.putstring('prd');
         apdcomport1.putstring(#13);

       { Zeichen einlesen bis Endzeichen ">" }
         while (pos('>',data) = 0) do
          while (ApdComPort1.CharReady) do {ComPort wird komplett ausgelesen}
            begin
             Data := data+ApdComPort1.GetChar;  {ComPort wird ausgelesen}
            end;
       begin
        firstnumber := 0;
        lastnumber := 0;
        hilftext   := '';
         {Ermittlung der Zahlenposition}
        while (firstnumber < Length(data)) and not (data[firstnumber] in ['1'..'9','0']) do
          Inc(firstnumber);
          lastnumber := firstnumber;
          {auslesen und speichern der Zahlen}
         while (lastnumber < Length(data)) and (data[lastnumber] in ['1'..'9','0']) do
          begin
          hilftext := hilftext + data[lastnumber];
          Inc(lastnumber);
         end;
         value:=StrToInt(hilftext);
         memo1.text := memo1.text + IntToStr(value);

        // {speichern der Zahlenwerte in einem Array}
           Setlength(prdwerte,length(prdwerte)+length(hilftext));
         data_length:=length(hilftext);
         for x:=1 to data_length do
         begin
             prdwerte[Length(prdwerte) - Length(hilftext)+ x] := strtoint(hilftext[x]);
              end;
         end;

       until differenzwert<=10;
      end;
          finally
    Liste.Free;
   end;
  end;
end;
Nochmal das ganze Zusammengefaßt:
"Ich frage einen com port ab und speicher diesen wert in der Variablen value ab.
Jetzt soll die schleife nochmals durchlaufen und der com port wird nochmal abgefragt, der neue wert soll z.b. in der variablen value_new abgespeichert werden.
Jetzt habe ich zwei Variablen, diese beiden würde ich gerne auf <=10 vergleichen, falls es der fall ist, soll die repaet until schleife beendet werden, falls nicht, soll ein weiterer wert ausgelesen werden, diesem eine neue variable zugewiesen werden und diese neue mit der letzten, also value_new auf <=10 verglichen werden, und immer weiter so bis die Bedingung erfüllt ist und die Schleife somit beendet werden kann. "

Wäre echt nett wenn jemand ne Idee hat. Vielleicht habe ich auch den total falschen Programmier Ansatz gewählt


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