kostenloser Webspace werbefrei: lima-city


Problem mit Strings und Hex-Werten

lima-cityForumProgrammiersprachenDelphi & Pascal

  1. Autor dieses Themas

    vercetti

    vercetti hat kostenlosen Webspace.

    Hi,

    ich arbeite zur Zeit an einem Programm, welches unter anderem Daten speichern muss. Dazu wandelt es jeden einzelnen Buchstaben des Strings in einen ASCII code um und die Zahl die dabei heraus kommt wird dann ein eine Hex-Zahl umgewandelt. Das sieht mach ich so:
    intToHex(ord(\'A\'), 4);


    Ok .. soweit funktioniert das.. Allerdings habe ich bei der umkehrung einige Probleme.
    Ich weiß nicht wie ich mit Delphi einen String mit einem Seperator teilen kann (Hier \" \"), da es in Delphi kein explode(); gibt.. Dann muss ich aus den einzelnen Teilen wieder einen Hex wert machen (In dem String sind dann halt Hex-Werte), den ichd ann wieder in eine Integer Zahl umwandel und dann mit chr() das Zeichen bekomme, welches ich dann in einem String zeigen können möchte.

    Probleme:
    - Kein Explode.. Alternative?
    - StrToHex gibt es auch nicht.. wie mach ich den string zu Hex?
    - Wie mach ich aus Hex wieder einen Integer
    - und wie krieg ich einen Char in einen String? (bei string := string + char; sagt der mir was von inkompatible typen ;) )

    könnt ihr mir vielleicht helfen? Danke schoneinmal im Vorraus


    Und ja ich hab die Suche benutzt ;)
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    Also, eins nach dem anderen:

    1) StrToHex gibt es nicht, das stimmt. Aber:
    Es gibt StrToInt, und eine Hex-Zahl wandelst du um, indem du ein Dollar-Zeichen vorne ranhängst, z.B. deine Hex-Zahl = 0C (Dezimal: 12), dann wandelst du die Hex-Zahl um, indem du schreibst Integer-Variable := StrToInt(\'$\'+Hex-Variable), hier in Reinschrift i := StrToInt(\'$0C\')

    2) Alternative zu Explode würde ich so angehen:
    Du hast deinen Anfangsstring, bestehend aus Hex-Zahlen in Vierergruppen (davon mal abgesehen, dass ich die Leerzeichen dazwischen weglassen würde, da du anscheinend sowieso Vierergruppen verwendest). Ich nenne den mal Source, du willst die Vierergruppe als String zum Umwandlen in eine Integer-Variable, ich nenne den String Dest_Str, und die Integer-Var Dest_Int.
    var
      Source,
      Dest_Str: String;
      Dest_Int: Integer;
    
    begin
      Source := \'0AC4872B8283\'; //vonmir aus aus einer Datei gelesen oder sonst was ...
      repeat
        //die ersten 4 Characters nehmen:
        Dest_Str := Copy(Source, 1, 4);
        //umwandeln in Integer, mit dem kannst du nun machen, was du willst!
        Dest_Int := StrToInt(\'$\'+Dest_Str);
        //die ersten 4 Zeichen abschneiden
        Source := Copy(Source, 5, Length(Source)-4);
        //und das ganze so lange, bis der String leer ist ...
      until Length(Source) < 4;
    end;


    3) Einen Char an einen String anhängen funktioniert! Ich denke mal, da hast du einen anderen Fehler drinnen. Poste mal den Code!
    Ansonsten kannst du über Typecasting versuchen, den Typen entsprechend umzuwandeln, z.B.:
    var
      St1, 
      St2: String;
      c: Char;
    
    begin
      St1 := St2 + String(c);
    end;

    Aber wie gesagt: Das müßte auch ohne Typecasting funktionieren!
  4. Autor dieses Themas

    vercetti

    vercetti hat kostenlosen Webspace.

    Hi.

    Danke vielmals.. Hast mir sehr viel weiter geholfen :> Hat alles funktioniert :thumb: So wie ich es wollte^^
    Danke Danke :>
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!