Entwickler-Ecke

Sonstiges (Delphi) - Schleife + Array macht probleme


MagicRain - Mi 19.07.17 12:07
Titel: Schleife + Array macht probleme
Moin Moin,

ich komme leider nicht weiter und brauche mal Eure Hilfe. Und zwar möchte ich eine Tabelle verarbeiten und dann diese in einem Array speichern, um damit später zu rechnen.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
  BitArray: array[1..10of Byte;
  B2Array: array[1..5of Byte;

  for i := 1 to 10 do
    begin
      Pos_1 := Pos(input1[i], Meinetabelle_1);
      BitArray[i]:= StrToInt(Pos_1);
    end;


Pos_1 ergibt meine Tabelle. Pos_1 sind die Positionen MeinerTabelle.

1 2 3 4 5 6 7 8 9 0
11 22 11 22 11 22 11 22 11 22 = Meine Tabellen Werte (Bytes)= Tabelle_1.
22 11 22 11 22 Werte Tabelle_2

Jetzt sollte ja jeder Wert von Pos_1 in ein BitArray speichern.
Jetzt möchte ich in meiner 2. Schleife auf diese Werte zugreifen
und damit rechnen.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
A := BitArray[i];
B := B2Array[i];

C := A * B;

A := 11;
B := 22;
C := 242;


Versuch 1 zur Lösung:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
  var
  F_Pos, f : String;
  i, i2, Pos_1 : Integer;

  for i := 1 to 10 do
    begin
      Pos_1 := Pos(input1[i], Tab_1);
      F_Pos := F_Pos + IntToHex(Pos_1,2);
      f := f+ IntToHex(pos_1,2);
    end;

    f := Copy(f, 3 , 10);

  for i2:= 1 to 10 do
    begin
      A := StrToInt('$' + Copy(F_Pos,i2,2));
      B := StrToInt('$' + Copy(f,i2,2));
      C := A * B;
    end;

Beim ersten Schleifendurchlauf, funktioniert das ganze Perfekt, aber beim 2. Durchlauf nicht mehr weil beim ersten A = 11 B = 22, 2 Durchlauf A:= 12 B = 21 irgendwie stimmen die Werte nicht er soll ja immer 2 Zeichen nehmen also 1. A = 11 B = 22 2 schleifen durchlauf A = 22 B = 11....Vielleicht sieht jemand mein Fehler....


Das Problem ist das BitArray und B2Array leider nicht die Werte haben, die ich ihnen ja eigentlich zu gewiesen habe.
Erst wollte ich das ganze von Schleife 1 in einem String speichern und dann verarbeiten, aber das funktioniert nicht, weil ich
nicht weiß, wie ich dann auf die Werte zugreifen kann. Beim 1. Schleifen Durchlauf soll Wert 1 genommen werden, dann Wert 2 usw...
Für jede Hilfe wäre ich dankbar.

MfG

MagicRain


Gammatester - Mi 19.07.17 12:52

user profile iconMagicRain hat folgendes geschrieben Zum zitierten Posting springen:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
  BitArray: array[1..10of Byte;
  B2Array: array[1..5of Byte;
...
C := A * B;

A := 11;
B := 22;
C := 242;

Die Operationen unter ... sollten mM überhaupt nicht kompilierbar sein. Ist das wirklich Dein Code?


MagicRain - Mi 19.07.17 12:57

Das jetzt nur zum Beispiel was ich dann damit vorhabe.

MfG


Gammatester - Mi 19.07.17 13:00

Wie multipliziert man zwei Byte-Arrays?


MagicRain - Mi 19.07.17 13:14

Wollte das so umsetzen..

A := bitarray[i];
B := b2array[i];
C := a * b;

MfG


Delete - Mi 19.07.17 13:47

- Nachträglich durch die Entwickler-Ecke gelöscht -


MagicRain - Mi 19.07.17 14:01

Schonmal danke aber die Werte sind leider nicht konstant das halt mein großes Problem. Muss dem Array immer wieder in einer Schleife die neuen Werte zuweisen.

MfG


Delete - Mi 19.07.17 14:07

- Nachträglich durch die Entwickler-Ecke gelöscht -


MagicRain - Mi 19.07.17 14:15

Ok danke. Das Problem ist nur ich will beim nächsten Schleifen Durchlauf die nächsten Werte einlesen ich dachte das ginge mit Zugriff auf den Schleifen Zähler.

A := Tabelle1[i];

Nur muss ich irgendwie dem Array die Daten zuweisen die vorher in einer Schleife berechnet werden.

MfG

Ed: muss später mal testen vlt liegt der Fehler da das ich mein Array 1..10 deklariert habe und nicht 0..9.


Delete - Mi 19.07.17 14:26

- Nachträglich durch die Entwickler-Ecke gelöscht -


MagicRain - Mi 19.07.17 14:36

Das Versuch ich halt hier glaube da liegt das Problem.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
  BitArray: array[1..10of Byte;
  B2Array: array[1..5of Byte;

  for i := 1 to 10 do
    begin
      Pos_1 := Pos(input1[i], Meinetabelle_1);
      BitArray[i]:= StrToInt(Pos_1);
    end;


BitArray[i]:= strtoint(pos1) ich glaube er erstellt das Array nicht richtig!


Mit freundlichen Grüßen


Delete - Mi 19.07.17 14:46

- Nachträglich durch die Entwickler-Ecke gelöscht -


MagicRain - Mi 19.07.17 14:52

Also Input ist zB vor oder Nachname und Tabelle ist eine Chartabbelle.

Const
Tabelle = 'abcdefghijklmnopqrstuvwxyz';
Input := ' Herr. Test';
Und jetzt holle ich mir mit pos die Position zB vom H von dem Herr. Und das möchte ich dann in meinem Array speichern und weiter damit rechnen. Hoffe das ist etwas verständlicher.

Mit freundlichen Grüßen


Delete - Mi 19.07.17 14:59

- Nachträglich durch die Entwickler-Ecke gelöscht -


MagicRain - Mi 19.07.17 15:52

Ja danke erstmal ich werde später mal wieder Bissel basteln und schauen was sich ergibt!

Mit freundlichen Grüßen