AGB  ·  Datenschutz  ·  Impressum  







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

Stringbearbeitung - UTF8-Zeichensatz

Ein Thema von Konstantin H. · begonnen am 14. Mai 2014 · letzter Beitrag vom 22. Mai 2014
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#11

AW: Stringbearbeitung - UTF8-Zeichensatz

  Alt 14. Mai 2014, 14:37
Mit StrToInt( '$FF' ) bekommt man 255 (in Hex $FF ) als Integer zurück.

Hilft dir das weiter
Leider nicht, es sind hauptsächlich Buchstaben und HEX-String muss zuerst zerteilt werden. FFFF und FF FF sind unterschiedliche werte
Warum ich wohl extra nur ein 2-Zeichen String als Beispiel gewählt habe (siehe Beispiel von DeddyH)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#12

AW: Stringbearbeitung - UTF8-Zeichensatz

  Alt 14. Mai 2014, 15:07
Wenn ich das mal zusammen fassen darf:
Du hast einen String in dem nur die Zeichen 0..9,A..F auftreten.
Sie sind eine hexadezimale Darstellung von Zeichen in UTF8-Codierung. (C39F='ß')
die Nutzdaten sind von bestimmten Zeichenfolgen begrenzt.
die Nutzdaten sollen im Klartext dargestellt werden / die nutzdaten sollen schön dargestellt werden.

Ist das soweit richtig?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Konstantin H.
Konstantin H.

Registriert seit: 3. Nov 2008
Ort: Schwedt/Oder
27 Beiträge
 
Delphi 2006 Professional
 
#13

AW: Stringbearbeitung - UTF8-Zeichensatz

  Alt 14. Mai 2014, 15:10
Also ich habe das problem der Zerteilung in HEX-Zahlen ziemlich brutal gelöst.

Delphi-Quellcode:
  
  stelle := Copy(gesamt_text,73,52);
  stelle_HEX := '';
  z := 52;
  i := 1;
  while i <= 26 do
   begin
    stelle_HEX := stelle_HEX + Copy(stelle, 1, 2) + ' ';
    z := z - 2;
    stelle := Copy(stelle, 3, z);
    i := i + 1;
   end;
Ich muss leider zugeben, dass ich eine ziemliche Niete bin, was komplexere Funktionen angeht. Darum versuche ich mich auf etwas einfachere funktionen zu beschränken.

@himitsu
Da ich nur mit Zahlen und Buchstaben(auch leerzeichen) arbeite, kommt es nicht zu solchen Kollisionen

@DeddyH
Ich versuche jetzt erstma deinen Code zu verstehen
  Mit Zitat antworten Zitat
Benutzerbild von Konstantin H.
Konstantin H.

Registriert seit: 3. Nov 2008
Ort: Schwedt/Oder
27 Beiträge
 
Delphi 2006 Professional
 
#14

AW: Stringbearbeitung - UTF8-Zeichensatz

  Alt 14. Mai 2014, 15:14
Wenn ich das mal zusammen fassen darf:
Du hast einen String in dem nur die Zeichen 0..9,A..F auftreten.
Sie sind eine hexadezimale Darstellung von Zeichen in UTF8-Codierung. (C39F='ß')
die Nutzdaten sind von bestimmten Zeichenfolgen begrenzt.
die Nutzdaten sollen im Klartext dargestellt werden / die nutzdaten sollen schön dargestellt werden.

Ist das soweit richtig?

Gruß
K-H
Ja. Soweit korrekt, außer es wird statt ß "SS" geschrieben und ein Leerzeichen verwendet. Schönheit ist erstmal nebensächlich. Die Buchstaben sind hauptsächlich uppercase.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#15

AW: Stringbearbeitung - UTF8-Zeichensatz

  Alt 14. Mai 2014, 15:22
Delphi-Quellcode:
var S: UTF8String;

SetLength(S, Length(gesamt_text) div 2)
HexToBin(PChar(gesamt_text), PAnsiChar(S), Length(S));
ShowMessage(Trim(S)); // ShowMessage(Trim(UTF8ToString(S))); falls noch keine funktionierende automatische String-Konvertierung existiert
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Konstantin H.
Konstantin H.

Registriert seit: 3. Nov 2008
Ort: Schwedt/Oder
27 Beiträge
 
Delphi 2006 Professional
 
#16

AW: Stringbearbeitung - UTF8-Zeichensatz

  Alt 14. Mai 2014, 17:24
@himitsu
wenn ich richtig verstehe, macht dein code folgendes:
1. Die Länge des UTF8-Strings wird auf Hälfte des Ursprungstexts festgelegt
2. Mit HexToBin konvertierst du die hex-zahlen, die du durch die beiden pointer festlegst
3. Mit Trim werden der Anfang und das Ende "gesäubert" und mit showmessage ausgegeben

Das ist leider nicht nützlich für mich, da ich die nicht benötigten Hex-zahlen ausfiltern muss. Und die eigentliche Konvertierung habe ich bereits realisiert.

Zerteilung des strings:
Delphi-Quellcode:
  
  stelle := Copy(gesamt_text,73,52);
  stelle_HEX := '';
  z := length(stelle);
  while z > 0 do
   begin
    stelle_HEX := stelle_HEX + Copy(stelle, 1, 2) + ' ';
    z := z - 2;
    stelle := Copy(stelle, 3, z);
   end;
Konvertierung von Hex zu String
Delphi-Quellcode:
function HexStrToStr(s: string) : string;
var
  s2 : string;
begin
  Result := '';
  while s <> 'do
  begin
    if Pos(' ', s) <> 0 then
    begin
      s2 := Copy(s, 1, Pos(' ', s)-1);
      s := Copy(s, Length(s2)+2, MaxInt);
    end
    else
    begin
      s2 := s;
      s := '';
    end;

    Result := Result + Chr(StrToInt('$' + s2));
  end;
end;
Ich suche erstmal nach der Lösung weiter.
  Mit Zitat antworten Zitat
Benutzerbild von Konstantin H.
Konstantin H.

Registriert seit: 3. Nov 2008
Ort: Schwedt/Oder
27 Beiträge
 
Delphi 2006 Professional
 
#17

AW: Stringbearbeitung - UTF8-Zeichensatz

  Alt 22. Mai 2014, 15:23
Also letztendlich habe ich alles beendet. Funktioniert auch alles.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   

 

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 20:03 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