| Autor |
Beitrag |
oOXTCOo
      
Beiträge: 141
Windows XP Prof. 3
Delphi 7
|
Verfasst: Di 09.06.09 03:41
schon wieder ein problem...
ich versuche eine ini datei auzulesen und einfach zum testen ins memo schreiben.
mit dem code;
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| try Ini:=TIniFile.Create('c:\test.ini'); memo1.Text:=Ini.ReadString('[120]', '0','Keine Daten!');
finally Ini.Free; end; |
doch es wird nichts erstellt?
auch wird nichts gelesen wenn die datei exestiert...
worann kann es liegen?
volle rechte habe ich natürlich und ordner sind nicht schreibgeschützt...
Moderiert von Narses: Code- durch Delphi-Tags ersetzt
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 09.06.09 05:01
Erstens wendest du den Ressourcenschutzblock falsch an: Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| Ini := TIniFile.Create('c:\test.ini'); try Memo1.Text := Ini.ReadString('[120]', '0', 'Keine Daten!'); finally Ini.Free; end; | Zweitens: Wie sieht denn die INI aus?
Dem Quelltext nach müsste die ja so aussehen: Quelltext
|
|
Popov
      
Beiträge: 1655
Erhaltene Danke: 13
WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
|
Verfasst: Di 09.06.09 07:23
Mal davon abgesehen, daß die Zeile
Delphi-Quelltext 1:
| Ini:=TIniFile.Create('c:\test.ini'); |
vor Try stehen muß, da dieser Bereich nicht geschützt werden muß, denn wenn es nicht klappt, dann klappt es eben nicht, dann muß Free auch kein Speicher freigeben, weil er nicht reserviert wurde, ist kein Fehler zu sehen. Ach ist Create im Try-Block kein Fehler, es muß nur nicht sein. Die Unit ist wohl angegeben und die Variable deklariert, sonst hättest du eine Fehlermeldung.
Da du nur liest gibt es auch keine Fehlermeldung wenn es die Datei unter 'c:\test.ini' nicht gibt. Wenn es die Datei nicht gibt, dann kommt eben der Default-Wert zum Einsatz, also eben 'Keine Daten!'.
'Keine Daten!' wird also angegeben wenn die Ini-Datei nicht existiert oder der Schlüssel nicht vorhanden ist. Wenn nichts kommt, also leerer String, dann ist der Schlüssel da, aber kein Wert.
Also die Ini ist eigentlich Idiotensicher. Irgendwas kommt auf jeden Fall, oder zumindest die Fehlermeldung.
_________________ Popov
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 09.06.09 07:26
|
|
dummzeuch
      
Beiträge: 593
Erhaltene Danke: 5
Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
|
Verfasst: Di 09.06.09 07:42
oOXTCOo hat folgendes geschrieben : |
ich versuche eine ini datei auzulesen und einfach zum testen ins memo schreiben.
|
Der Fehler liegt im Read, das muesste so aussehen
Delphi-Quelltext 1:
| memo1.Text:=Ini.ReadString('120', '0','Keine Daten!'); |
Also keine eckigen Klammern, die ergaenzt TInifile selbst. Es sei denn, Deine Ini enthaelt eine Section [[120]] - also mit doppelten Klammern - was ich nicht annehme.
| Zitat: |
doch es wird nichts erstellt?
|
Erstellt wird eine .ini nur, wenn man in sie schreibt.
twm
Moderiert von Narses: Code- durch Delphi-Tags ersetzt
|
|
Popov
      
Beiträge: 1655
Erhaltene Danke: 13
WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
|
Verfasst: Di 09.06.09 08:07
|
|
oOXTCOo 
      
Beiträge: 141
Windows XP Prof. 3
Delphi 7
|
Verfasst: Di 09.06.09 14:30
danke jetzt klapps...
--- Moderiert von Narses: Beiträge zusammengefasst---
sorry das ich schon wieder fragen muss aber diese misst ini files wollen nicht so wie ich will
ich habe den code nun so geschrieben:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| procedure TForm1.Button7Click(Sender: TObject); var Ini: TIniFile; pmname, pmini :string; pmlen, i:integer; begin
opendialog1.filter:='*.pm'; if OpenDialog1.Execute then pmname:=(Opendialog1.FileName);
Ini := TIniFile.Create(pmname); try pmini:=Ini.ReadString('120', '0','Keine Daten!'); finally Ini.Free; end;
pmlen:=(length(pmini)); for i:= 1 to pmlen do begin pmodd[i]:=pmini[i] + pmini[i + 1]; memo1.lines.add(pmodd[i]); pmlen:= pmlen + 1; end; |
nun habe ich das problem das er natürlich immer zwei zeichen nimmt aber im nächsten wieder
das zeichen von vorheringen was ja klar ist...
was mit aber nicht klar ist, wenn ich diese zeile in die schleife schreibe
Delphi-Quelltext sollte er ja praktisch immer einen auslassen oder habe ich da einen denk fehler?
oder wie kann man es sonst noch hin bekommen?
die zeile die ich einlese sieht so aus:
Quelltext 1: 2: 3:
| 0000000000000000219010000000000000180200000000000028000001FFFFFF003 C000001FFFFFF000000003F007F206F07FFFFF800005003000502000000007FFF6F 07FFFFFFFFF80000530300050221901F21901FFFFF |
es sieht dann aber immer so aus:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 21 ... (gekürzt) |
nun soll immer ein byte in ein array gespeicher werden.
also so:
Delphi-Quelltext 1: 2: 3: 4:
| pmodd[1]:=$00; pmeven[1]:=$00; pmodd[2]:$00; pmeven[2]:=$00; |
uns so weiter bis alle zeichen in die arrays gespeichert wurden...
damit kann ich dann pratkisch die checksumme berechnen und weiter senden (das ist kein problem).
wenn ich dann wissen will wiviele array verwendet wurden, muss ich ja nur
pmlent durch 4 teilen, dann habe ich jeweils die länge der odd variablen und jweils der even variabeln ?
Moderiert von Narses: Quote- in Delphi-Tags geändert, Formatierungs überarbeitet
--- Moderiert von Narses: Beiträge zusammengefasst---
ach schon klar, pmlen ist ja die end länge...
aber so:
Delphi-Quelltext klappts auch nicht...
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| pmlen:=(length(pmini));
for i:= 1 to pmlen do begin
pmodd[i]:=pmini[i] + pmini[i + 1]; pmeven[i]:=pmini[i + 3] + pmini[i + 4];
i:= (i + 4); end; |
klappt alles nicht
Moderiert von Narses: Quote- durch Delphi-Tags ersetzt
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Di 09.06.09 17:44
Hallo,
entweder du nimmst eine while-Schleife, etwa so(Randbedingungen nicht berücksichtigt):
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| i := 1; while i < Length(s) do begin inc(i,2); end; |
oder Du arbeitest mit mod:
Delphi-Quelltext 1: 2: 3:
| for z := 1 to length(s) do if z mod 2 = 1 then |
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
Popov
      
Beiträge: 1655
Erhaltene Danke: 13
WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
|
Verfasst: Di 09.06.09 19:31
|
|
oOXTCOo 
      
Beiträge: 141
Windows XP Prof. 3
Delphi 7
|
Verfasst: Di 09.06.09 20:15
danke danke danke!
werde ich gleich mal ausprobieren...
|
|
Popov
      
Beiträge: 1655
Erhaltene Danke: 13
WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
|
Verfasst: Di 09.06.09 20:59
Ich verstehe zwar noch nicht ganz was du willst, aber ich glaube du willst eine Zeile mit Hex Zahlen in zweier Werte zerlegen.
Hier eine kleine Routine die das sehr einfach macht. Sie ist zwar nicht elegant, aber auch nicht peinlich. Sie ist einfach nur einfach und verständlich.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| var s, s2: String; begin s := '0000000000000000219010000000000000180200000000000028000001FFFFFF003' + 'C000001FFFFFF000000003F007F206F07FFFFF800005003000502000000007FFF6F' + '07FFFFFFFFF80000530300050221901F21901FFFFF';
while Length(s) > 0 do begin s2 := Copy(s, 1, 2); Delete(s, 1, 2);
ListBox1.Items.Add(s2); end; end; |
_________________ Popov
|
|
oOXTCOo 
      
Beiträge: 141
Windows XP Prof. 3
Delphi 7
|
Verfasst: Di 09.06.09 21:06
PERFEKT DANKE!
mit dem ersten code habe ichs nicht so hinbekommen wie ichs brauche,
dafür aber mit dem zweiten.
habs so gemacht:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| for i := 0 to pmlen do if i mod 4 = 1 then begin pmodd[j]:=pmini[i] + pmini[i + 1]; pmeven[j]:=pmini[i + 2] + pmini[i + 3]; memo1.lines.add('ODD ' + inttostr(j) + ': ' + pmodd[j]); memo1.lines.add('EVEN ' + inttostr(j) + ': ' + pmeven[j]); J:=(J+1); end; |
jetzt passts, jetzt kommt das gewünschte ergebnis so raus wie es soll:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88:
| ODD 1: 00 EVEN 1: 00 ODD 2: 00 EVEN 2: 00 ODD 3: 00 EVEN 3: 00 ODD 4: 00 EVEN 4: 00 ODD 5: 21 EVEN 5: 90 ODD 6: 10 EVEN 6: 00 ODD 7: 00 EVEN 7: 00 ODD 8: 00 EVEN 8: 00 ODD 9: 00 EVEN 9: 18 ODD 10: 02 EVEN 10: 00 ODD 11: 00 EVEN 11: 00 ODD 12: 00 EVEN 12: 00 ODD 13: 00 EVEN 13: 28 ODD 14: 00 EVEN 14: 00 ODD 15: 01 EVEN 15: FF ODD 16: FF EVEN 16: FF ODD 17: 00 EVEN 17: 3C ODD 18: 00 EVEN 18: 00 ODD 19: 01 EVEN 19: FF ODD 20: FF EVEN 20: FF ODD 21: 00 EVEN 21: 00 ODD 22: 00 EVEN 22: 00 ODD 23: 3F EVEN 23: 00 ODD 24: 7F EVEN 24: 20 ODD 25: 6F EVEN 25: 07 ODD 26: FF EVEN 26: FF ODD 27: F8 EVEN 27: 00 ODD 28: 00 EVEN 28: 50 ODD 29: 03 EVEN 29: 00 ODD 30: 05 EVEN 30: 02 ODD 31: 00 EVEN 31: 00 ODD 32: 00 EVEN 32: 00 ODD 33: 7F EVEN 33: FF ODD 34: 6F EVEN 34: 07 ODD 35: FF EVEN 35: FF ODD 36: FF EVEN 36: FF ODD 37: F8 EVEN 37: 00 ODD 38: 00 EVEN 38: 53 ODD 39: 03 EVEN 39: 00 ODD 40: 05 EVEN 40: 02 ODD 41: 21 EVEN 41: 90 ODD 42: 1F EVEN 42: 21 ODD 43: 90 EVEN 43: 1F ODD 44: FF EVEN 44: FF |
danke nochmals!
|
|
oki
      
Beiträge: 40
Win XP
Delphi 2007 Prof
|
Verfasst: Di 09.06.09 21:42
Hallo,
hier noch mal ein Nachtrag von mir. Der Beitrag ist in der Zwischenzeit abhandengekommen. Ich möchte ihn aber trotzdem noch mal hier einfügen.
Zeig doch mal deine Ini-Datei. Das sieht alles sehr umständlich aus was du da machst. Schau dir doch mal ReadSection der Klasse TIniFile an. Ich denke das ist eine Überlegung wert.
Für das zerlegen eines Strings in einzelne Wordsegmente (du redest immer von Byte schreibst aber $00 usw.) reicht eine Schleife:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| var OddArr, EvenArr : Array of Word; Even : Boolean; ... SetLength(OddArr, Length(pmini) div 2); SetLength(EvenArr, Length(pmini) div 2); Even := True; For Counter := 1 to Length(pmini) do begin if not odd(Counter) then begin if Even then EvenArr[Counter div 4] := InttoStr(Copy(pmini, Counter, 2)) else OddArr[Counter div 4] := InttoStr(Copy(pmini, Counter, 2)); Even := not Even; end; end; |
Ich hab das jetzt mal so live getippt. Hoffe nichts vergessen zu haben.
Gruß oki
_________________ 42
|
|
oOXTCOo 
      
Beiträge: 141
Windows XP Prof. 3
Delphi 7
|
Verfasst: Di 09.06.09 22:24
hier ist die ini...
aber so wie ich jetzt habe funktioniets super...
Einloggen, um Attachments anzusehen!
|
|
Popov
      
Beiträge: 1655
Erhaltene Danke: 13
WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
|
Verfasst: Di 09.06.09 23:02
Nur mal so als Info. Wenn du eine Datei nur mit Schlüsseln und Werten hast, also keine weiteren Sektionen, dann brauchst du auch keine Ini zu bemühen. Das geht auch mit Stringlist. Hier ein Beispiel:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| var Path: String; s, s2: String; sl: TStringList; begin Path := ExtractFilePath(ParamStr(0)) + 'RM-400_353103020937301_120_120.pm';
sl := TStringList.Create; try if FileExists(Path) then begin sl.LoadFromFile(Path);
s := sl.Values['0'];
end; finally sl.Free; end;
end; |
_________________ Popov
|
|
oOXTCOo 
      
Beiträge: 141
Windows XP Prof. 3
Delphi 7
|
Verfasst: Di 09.06.09 23:59
danke dir, bin aber froh das es nun läuft
habs jetzt schon fast komplett am laufen:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112:
| FT_out_Buffer[0]:=$1E FT_out_Buffer[1]:=$00 FT_out_Buffer[2]:=$10 FT_out_Buffer[3]:=$23 FT_out_Buffer[4]:=$00 FT_out_Buffer[5]:=$68 FT_out_Buffer[6]:=$00 FT_out_Buffer[7]:=$08 FT_out_Buffer[8]:=$01 FT_out_Buffer[9]:=$02 FT_out_Buffer[10]:=$00 FT_out_Buffer[11]:=$78 FT_out_Buffer[12]:=$00 FT_out_Buffer[13]:=$00 FT_out_Buffer[14]:=$00 FT_out_Buffer[15]:=$00 FT_out_Buffer[16]:=$00 FT_out_Buffer[17]:=$00 FT_out_Buffer[18]:=$00 FT_out_Buffer[19]:=$58 FT_out_Buffer[20]:=$00 FT_out_Buffer[21]:=$00 FT_out_Buffer[22]:=$00 FT_out_Buffer[23]:=$00 FT_out_Buffer[24]:=$00 FT_out_Buffer[25]:=$00 FT_out_Buffer[26]:=$00 FT_out_Buffer[27]:=$00 FT_out_Buffer[28]:=$21 FT_out_Buffer[29]:=$90 FT_out_Buffer[30]:=$10 FT_out_Buffer[31]:=$00 FT_out_Buffer[32]:=$00 FT_out_Buffer[33]:=$00 FT_out_Buffer[34]:=$00 FT_out_Buffer[35]:=$00 FT_out_Buffer[36]:=$00 FT_out_Buffer[37]:=$18 FT_out_Buffer[38]:=$02 FT_out_Buffer[39]:=$00 FT_out_Buffer[40]:=$00 FT_out_Buffer[41]:=$00 FT_out_Buffer[42]:=$00 FT_out_Buffer[43]:=$00 FT_out_Buffer[44]:=$00 FT_out_Buffer[45]:=$28 FT_out_Buffer[46]:=$00 FT_out_Buffer[47]:=$00 FT_out_Buffer[48]:=$01 FT_out_Buffer[49]:=$FF FT_out_Buffer[50]:=$FF FT_out_Buffer[51]:=$FF FT_out_Buffer[52]:=$00 FT_out_Buffer[53]:=$3C FT_out_Buffer[54]:=$00 FT_out_Buffer[55]:=$00 FT_out_Buffer[56]:=$01 FT_out_Buffer[57]:=$FF FT_out_Buffer[58]:=$FF FT_out_Buffer[59]:=$FF FT_out_Buffer[60]:=$00 FT_out_Buffer[61]:=$00 FT_out_Buffer[62]:=$00 FT_out_Buffer[63]:=$00 FT_out_Buffer[64]:=$3F FT_out_Buffer[65]:=$00 FT_out_Buffer[66]:=$7F FT_out_Buffer[67]:=$20 FT_out_Buffer[68]:=$6F FT_out_Buffer[69]:=$07 FT_out_Buffer[70]:=$FF FT_out_Buffer[71]:=$FF FT_out_Buffer[72]:=$F8 FT_out_Buffer[73]:=$00 FT_out_Buffer[74]:=$00 FT_out_Buffer[75]:=$50 FT_out_Buffer[76]:=$03 FT_out_Buffer[77]:=$00 FT_out_Buffer[78]:=$05 FT_out_Buffer[79]:=$02 FT_out_Buffer[80]:=$00 FT_out_Buffer[81]:=$00 FT_out_Buffer[82]:=$00 FT_out_Buffer[83]:=$00 FT_out_Buffer[84]:=$7F FT_out_Buffer[85]:=$FF FT_out_Buffer[86]:=$6F FT_out_Buffer[87]:=$07 FT_out_Buffer[88]:=$FF FT_out_Buffer[89]:=$FF FT_out_Buffer[90]:=$FF FT_out_Buffer[91]:=$FF FT_out_Buffer[92]:=$F8 FT_out_Buffer[93]:=$00 FT_out_Buffer[94]:=$00 FT_out_Buffer[95]:=$53 FT_out_Buffer[96]:=$03 FT_out_Buffer[97]:=$00 FT_out_Buffer[98]:=$05 FT_out_Buffer[99]:=$02 FT_out_Buffer[100]:=$21 FT_out_Buffer[101]:=$90 FT_out_Buffer[102]:=$1F FT_out_Buffer[103]:=$21 FT_out_Buffer[104]:=$90 FT_out_Buffer[105]:=$1F FT_out_Buffer[106]:=$FF FT_out_Buffer[107]:=$FF FT_out_Buffer[108]:=$01 FT_out_Buffer[109]:=$43 FT_out_Buffer[110]:=$AC FT_out_Buffer[111]:=$CC |
so wirds weiter zum ftdi device gesendet...
der buffer 109 ist die sequence nummer
der buffer 110 ist die odd checksumme
der buffer 111 ist die even checksumme
ich habe nur noch ein problem mit den beiden checksummen...
ins memo kann ichs so schreiben, aber wenn ichs direkt
so in den ft buffer schreiben will bekomme ich die fehlermeldung:
[Fehler] Unit1.pas(4672): Inkompatible Typen: 'Byte' und 'String'
das liegt jetzt aber darann das ich arrays statt normale variablen verwende...
gibt es eine möglichkeit byte zu string zu konvertieren?
oder das array umzuwandeln?
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 10.06.09 00:00
Du meinst wohl Byte zu Char, oder? Den Buchstaben zu einem Asciicode bekommst du mit Chr.
|
|
oOXTCOo 
      
Beiträge: 141
Windows XP Prof. 3
Delphi 7
|
Verfasst: Mi 10.06.09 00:11
jaenicke hat folgendes geschrieben : | | Du meinst wohl Byte zu Char, oder? Den Buchstaben zu einem Asciicode bekommst du mit Chr. |
ich poste mal das stück source code was ich habe und fast funktioniert:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106:
| opendialog1.filter:='*.pm'; if OpenDialog1.Execute then begin pmname:=(Opendialog1.FileName);
Ini := TIniFile.Create(pmname); try pmini:=Ini.ReadString('120', '0','Keine Daten!'); finally Ini.Free; end;
J:=11; pmlen:=(length(pmini));
for i := 0 to pmlen do if i mod 4 = 1 then begin pmodd[j]:='$' + pmini[i] + pmini[i + 1]; pmeven[j]:='$' + pmini[i + 2] + pmini[i + 3]; memo2.lines.add('ODD ' + inttostr(j) + ': ' + pmodd[j]); memo2.lines.add('EVEN ' + inttostr(j) + ': ' + pmeven[j]); J:=(J+1); end;
pmodd[1]:='$1E'; pmeven[1]:='$00'; pmodd[2]:='$10'; pmeven[2]:='$23'; pmodd[3]:='$00'; pmeven[3]:='$68'; pmodd[4]:='$00'; pmeven[4]:='$08'; pmodd[5]:='$01'; pmeven[5]:='$02'; pmodd[6]:='$00'; pmeven[6]:='$78'; pmodd[7]:='$00'; pmeven[7]:='$00'; pmodd[8]:='$00'; pmeven[8]:='$00'; pmodd[9]:='$00'; pmeven[9]:='$00'; pmodd[10]:='$00'; pmeven[10]:='$58'; pmodd[55]:='$01'; pmeven[55]:='$43'; pmbuffer:='$'; pmbuffer2:='$';
memo2.lines.add('ODD_RESULT: ' + inttostr(oddresult));
oddresult:=$; evenresult:=$;
pmlen:= (pmlen div 4 ); pmlen:= (pmlen + 11 );
for i:=1 to pmlen do begin oddresult:= oddresult xor strtoint(pmodd[i]); end; memo2.lines.add('ODD_RESULT: ' + inttostr(oddresult));
for i:=1 to pmlen do begin evenresult:= evenresult xor strtoint(pmeven[i]); end; memo2.lines.add('EVEN_RESULT: ' + inttostr(evenresult));
memo2.lines.add('ODD CHECKSUM = ' + IntToHex(oddresult, 1)); memo2.lines.add('EVEN CHECKSUM = ' + IntToHex(evenresult, 1));
Soddresult:= ('$' + IntToHex(oddresult, 1)); Sevenresult:=('$' + IntToHex(evenresult, 1));
memo2.Lines.add('SO WIRDS EINGEFÜGT: ' + SoddResult); memo2.LineS.add('SO WIRDS EINGEFÜGT: ' + SevenResult);
J:=0;
for i:=1 to pmlen do begin pmbuffer:=pmodd[i]; pmbuffer2:=pmeven[i]; memo2.lines.add('FT_out_Buffer['+ inttostr(j) +']:=' + pmodd[i]); J:=j+1; memo2.lines.add('FT_out_Buffer['+ inttostr(j) +']:=' + pmeven[i]); J:=J+1; end;
FT_out_Buffer[j]:=soddresult; memo2.lines.add('FT_out_Buffer['+ inttostr(j) +']:=' + Soddresult); j:= (j + 1); FT_out_Buffer[j]:=sevenresult; memo2.lines.add('FT_out_Buffer['+ inttostr(j) +']:=' + Sevenresult); |
hier liegt das problem:
Delphi-Quelltext 1: 2: 3: 4: 5:
| FT_out_Buffer[j]:=soddresult; memo2.lines.add('FT_out_Buffer['+ inttostr(j) +']:=' + Soddresult); j:= (j + 1); FT_out_Buffer[j]:=sevenresult; memo2.lines.add('FT_out_Buffer['+ inttostr(j) +']:=' + Sevenresult); |
ins memom wirds richitg geschrieben so wie ichs brauche...
aber in den ft_buffer bekomme ich die oben genannte fehlermeldung...
Zuletzt bearbeitet von oOXTCOo am Mi 10.06.09 00:15, insgesamt 1-mal bearbeitet
|
|
Popov
      
Beiträge: 1655
Erhaltene Danke: 13
WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
|
Verfasst: Mi 10.06.09 00:12
Du kannst Char oder Byte auch bei Arrays haben, du mußt es nur so deklarieren.
_________________ Popov
|
|
oOXTCOo 
      
Beiträge: 141
Windows XP Prof. 3
Delphi 7
|
Verfasst: Mi 10.06.09 00:17
Popov hat folgendes geschrieben : | | Du kannst Char oder Byte auch bei Arrays haben, du mußt es nur so deklarieren. |
und wie mache ich das?
bzw. umwandeln geht nicht?
denn ich habe nur noch mit den beiden checksummen das problem, dann würde es laufen...
|
|