AGB  ·  Datenschutz  ·  Impressum  







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

Array zuweisung falsch???

Ein Thema von skaven · begonnen am 22. Okt 2004 · letzter Beitrag vom 22. Okt 2004
Antwort Antwort
skaven

Registriert seit: 13. Okt 2004
87 Beiträge
 
#1

Array zuweisung falsch???

  Alt 22. Okt 2004, 16:42
Ist die array zuweiseung richtig?

Ich will die werte die mir die variable data gibt in ein fortlaufendes array geben, dabei die letzten zwei aktuellen werte miteinander vergleichen und wenn der unterschied <=10 ist soll die schleife beendet werden, aber irgendwie funktioniert das nicht, wieso?
Hab keine Ahnung mehr

Delphi-Quellcode:
///// Liest eine gewählte Datei ein und sendet die Daten per com 1 an das Endgerät /////

procedure TForm1.DateieinlesenClick(Sender: TObject);
var
   Liste : TStringList;
   i : Integer;
   data : string;
   x : integer;
   F: TextFile;
   filename : String;
   prdwerte : array of integer;
   differenzwert : integer;
   begin
  if OpenDialog1.Execute then { Dialog zum Dateiöffnen anzeigen }
  begin
    filename := OpenDialog1.FileName;
   try
  Liste := TStringList.Create;
  Liste.LoadFromFile(filename);
    for i := 0 to Liste.Count-1 do
      begin
      // ShowMessage(Liste[i]);
       apdcomport1.putstring(Liste[i]);
       apdcomport1.putstring(#13);
       repeat
        apdcomport1.putstring('prd');
        apdcomport1.putstring(#13);
        // repeat
         //until data = '-->';
         Setlength(prdwerte,length(prdwerte)+length(data));
        for x:=1 to Length(Data) do
        prdwerte[Length(prdwerte) - Length(Data)] := integer(Data[x]);
         //differenzwert := prdwerte[high(prdwerte)-1]-prdwerte[high(prdwerte)];
        until abs(x)<=10;
    end
   finally
  Liste.Free;
  end;
  end;
end;


///// Stellt den Antwortbefehl des Endgerätes auf einem Memo da /////

procedure TForm1.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
var
  Data: String;
  I: Integer;
begin
     data := '';
    for I:= 0 to Count-1 do
     Data := data+ApdComPort1.GetChar;
  Memo1.text:= data;
  end;
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#2

Re: Array zuweisung falsch???

  Alt 22. Okt 2004, 16:46
Zitat von skaven:
Hab keine Ahnung mehr
Am besten du schläfst mal eine Nacht drüber und suchst dir erstmal ein vernüftiges Delphi-Tutorial.

Ich sehe in dem Code nur noch das absolute Chaos. Zusammengeklatscht aus den ganze Antworten zu deinen Beiträgen. Zum Programmieren braucht man eine gewisse Eigeninitiative und muss auch mal selber die grauen Zellen anstrengen.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#3

Re: Array zuweisung falsch???

  Alt 22. Okt 2004, 16:56
was funktioniert nicht?
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#4

Re: Array zuweisung falsch???

  Alt 22. Okt 2004, 18:03
Delphi-Quellcode:
procedure TForm1.DateieinlesenClick(Sender: TObject);
var
   Liste : TStringList;
   i, x, differenzwert : Integer;
   data, filename : string;
   F: TextFile;
   prdwerte : array of integer;
begin
//Init
  Liste := TStringList.Create;

//Main Proc
  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
          apdcomport1.putstring(Liste[i]);
          apdcomport1.putstring(#13);
          repeat
            apdcomport1.putstring('prd');
            apdcomport1.putstring(#13);
            //repeat
            //until data = '-->';
            Setlength(prdwerte,length(prdwerte)+length(data));
            for x:=1 to Length(Data) do
              prdwerte[Length(prdwerte) - Length(Data)] := strtoint(Data[x]);
            //differenzwert := prdwerte[high(prdwerte)-1]-prdwerte[high(prdwerte)];
          until abs(x)<=10;
          end
      finally
      end;
    end;
  Liste.Free;
end;

procedure TForm1.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
var
  Data: String;
  I: Integer;
begin
  data := '';
  for I:= 0 to Count-1 do
    Data :=data + ApdComPort1.GetChar;
  Memo1.text:= data;
end;
das is fast dasselbe nur nochma vernünftig formatiert

die verbesserungen(find dich):

ich hab das create an den anfang getan
integer() durch strtoint() ersetzt

nun ein fehler (glaub ich):

Delphi-Quellcode:
for x:=1 to Length(Data) do
prdwerte[Length(prdwerte) - Length(Data)] := strtoint(Data[x]);
du willst glaube ich jede stelle von data einzeln zu prdwerte hinzufügen....
aber du schreibst jedes mal in die zelbe zelle von prdwerte....
es müsste so lauten:

Delphi-Quellcode:
data_length:=length(data);//länge nehmen
for x:=1 to data_length do
  begin
  prdwerte[Length(prdwerte) - Length(Data)] := strtoint(Data[x]);
  delete(data,0,1); //durch das löschen verringert sich die länge von data und der index beim nächsten durchlauf ist erhöht...
  end;
dann..was soll diese abfrage "until abs(x)<=10"

abs is hier für die tonne, weil x nie negtiv sein kann, da davor diese schleife ist:
for x:=1 to data_length do

und wenn data_length negativ wäre (kannes aber auch nicht sein) dann würde die schleife nicht ausgeführt, und x wäre 0 oder 1 (bin mir nicht sicher) aber auf jeden fall nicht <0

so, und x<10, da kannst du auch sagen data_length, das is verständlicher
aber da haste recht, das geht nur mit meiner version

das is so das was mir spontan aufgefallen ist....

hoffe es hilft dir erst mal...



ADD: die wegkommentierten sachen habbich erstmal ignoriert
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Array zuweisung falsch???

  Alt 22. Okt 2004, 18:09
Ist der Inhalt einer Schleifenvariable nach der Schleife nicht potentiell undefiniert?
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#6

Re: Array zuweisung falsch???

  Alt 22. Okt 2004, 18:19
neee...das sollte nicht sein....aber wenn man hatt for i:=1 to -1...

ist dann danach i=dem wert von vorher (wahrscheinlich 0) oder =1 (also dem startwert)?
»Unlösbare Probleme sind in der Regel schwierig...«
  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 02:01 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