Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Probleme mit funktion. (https://www.delphipraxis.net/186530-probleme-mit-funktion.html)

jeng37 9. Sep 2015 16:29

Probleme mit funktion.
 
Hallo,

Ich habe probleme mit folgender funktion.
Wenn ich für Windows compilire klappt alles inwandfrei, nur unter Andoid nicht.
Unter Android bekommen ich immer 00 zurück.:x

Delphi-Quellcode:
function StringToHex(S: String): String;
var
  I: Integer;
begin
  Result := '';
  for I := 1 to length(S) do
    Result := Result + ' ' + IntToHex(ord(S[I]), 2);
end;
Hier ein Beispiel.

Delphi-Quellcode:
procedure TfrmMain.RadioButtonChanged(Sender: TObject);
Var
  I, X: Integer;
Begin
  Memo1.Lines.Clear;
  I := HexToByte(IntToHex(TRadioButton(Sender).Tag, 1));

  for X := 0 to 7 do
  begin
    PortState0[I][X] := False; //zur info PortState0: array [0 .. 7, 0 .. 7] of Boolean;
  end;

  Exo := Exodet[I]; //zur info Exo: String; und Exodet: array [0 .. 7] of String;
  Memo1.lines.add(' '+StringToHex(Exo)+' ' +Exodet[I]);
  ScanStatus;
  SetPortOn(I);

End;
Delphi-Quellcode:
Memo1.lines.add(' '+StringToHex(Exo)+' ' +Exodet[I]);
StringToHex gibt mir unter Windows den richtigen wert zurück.
Unter Android bekomme ich immer den wert 00.
Mit Exodet[i] klappt die ausgabe auf beiden.

Wieso geht das nicht under Android?

Union 9. Sep 2015 16:30

AW: Probleme mit funktion.
 
Unter Android sind die Strings 0-basiert.

Sir Rufo 9. Sep 2015 16:44

AW: Probleme mit funktion.
 
Delphi-Quellcode:
StringToHex
ist aber von der Bezeichnung eher irreführend.

Oder wolltest du eher
Delphi-Quellcode:
HexToInt
haben? Dafür gibt es aber schon Delphi-Referenz durchsuchenStrToInt

Ah, jetzt, du willst den String als Bytefolge in Hex-Darstellung ... da solltest du besser über Delphi-Referenz durchsuchenTEncoding.GetBytes gehen und diese Bytes darstellen lassen.

jeng37 9. Sep 2015 16:59

AW: Probleme mit funktion.
 
Zitat:

Zitat von Union (Beitrag 1315324)
Unter Android sind die Strings 0-basiert.

Ok, Danke
Bin schon dicke am lesen!

jeng37 9. Sep 2015 17:01

AW: Probleme mit funktion.
 
Zitat:

Zitat von Sir Rufo (Beitrag 1315326)
Delphi-Quellcode:
StringToHex
ist aber von der Bezeichnung eher irreführend.

Oder wolltest du eher
Delphi-Quellcode:
HexToInt
haben? Dafür gibt es aber schon Delphi-Referenz durchsuchenStrToInt

Ah, jetzt, du willst den String als Bytefolge in Hex-Darstellung ... da solltest du besser über Delphi-Referenz durchsuchenTEncoding.GetBytes gehen und diese Bytes darstellen lassen.

:)
Diese Sache muss nun erst mal warten, muss mich erst um obriges Problem kümmern.
Aber Danke für den Hinweis!

Sir Rufo 9. Sep 2015 17:03

AW: Probleme mit funktion.
 
Zitat:

Zitat von jeng37 (Beitrag 1315329)
Zitat:

Zitat von Sir Rufo (Beitrag 1315326)
Delphi-Quellcode:
StringToHex
ist aber von der Bezeichnung eher irreführend.

Oder wolltest du eher
Delphi-Quellcode:
HexToInt
haben? Dafür gibt es aber schon Delphi-Referenz durchsuchenStrToInt

Ah, jetzt, du willst den String als Bytefolge in Hex-Darstellung ... da solltest du besser über Delphi-Referenz durchsuchenTEncoding.GetBytes gehen und diese Bytes darstellen lassen.

:)
Diese Sache muss nun erst mal warten, muss mich erst um obriges Problem kümmern.
Aber Danke für den Hinweis!

Damit erledigt sich dein obriges Problem von selbst ;)

jeng37 9. Sep 2015 17:13

AW: Probleme mit funktion.
 
Zitat:

Zitat von Sir Rufo (Beitrag 1315331)
Zitat:

Zitat von jeng37 (Beitrag 1315329)
Zitat:

Zitat von Sir Rufo (Beitrag 1315326)
Delphi-Quellcode:
StringToHex
ist aber von der Bezeichnung eher irreführend.

Oder wolltest du eher
Delphi-Quellcode:
HexToInt
haben? Dafür gibt es aber schon Delphi-Referenz durchsuchenStrToInt

Ah, jetzt, du willst den String als Bytefolge in Hex-Darstellung ... da solltest du besser über Delphi-Referenz durchsuchenTEncoding.GetBytes gehen und diese Bytes darstellen lassen.

:)
Diese Sache muss nun erst mal warten, muss mich erst um obriges Problem kümmern.
Aber Danke für den Hinweis!

Damit erledigt sich dein obriges Problem von selbst ;)

Habs gemergt :oops:
Delphi-Quellcode:
 for i:= Low(s) to High(s) do // so läufts
Also werde ich mir diese funktion nun doch zuerst vornehmen :oops:
Danke euch beiden für die schnelle hilfe!
:thumb:

himitsu 10. Sep 2015 09:58

AW: Probleme mit funktion.
 
Nicht nur unter Android.
Es gibt das Define NEXTGEN, was du abfragen kannst. (IFDEF)
Gilt aktuell für Android und iOS.

Und es gibt für "Altcode" den Compilerschalter
Delphi-Quellcode:
{$ZEROBASEDSTRINGS OFF}
.

Zusätzlich gibt es noch die Record-Helper für den String, welche fast immer und wenn dann überall 0-basierend sind.
Und dann natürlich Dinge wie Low und High.

Aber Achtung, je nach Einstellung kann sich das von Unit zu Unit unterscheiden, also bissl Aufpassen, wenn man Position/Index an andere Funktionen weitergibt.

Der schöne Günther 10. Sep 2015 10:11

AW: Probleme mit funktion.
 
Zitat:

Zitat von himitsu (Beitrag 1315424)
Zusätzlich gibt es noch die Record-Helper für den String, welche fast immer und wenn dann überall 0-basierend sind.

Wo den nicht? Mein Weltbild sagt einfach "Nimm einfach immer
Delphi-Quellcode:
meinString.Chars[index]
bei Null beginnend (wie alles andere auch) und gut ist.
". Liege ich falsch?

himitsu 10. Sep 2015 10:48

AW: Probleme mit funktion.
 
Abgesehn davon, daß die Record-Helper für Insert und Delete das Grauenhafteste sind, was ich mir vorstellen kann, da sie sämtliche Speicheroptimierungen zu Nichte machen,
hat Chars keinen Setter und man darf dann doch wieder auf das gute alte und schön kurze
Delphi-Quellcode:
S[i]
zurückgreifen.
Auch beim Umgang mit anderen String-Funktionen darf man immer schön aufpassen in welchem Format (0 oder 1) man den Index da rein geben muß, bzw. wie er raus kommt.


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