AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi XE2: Probleme mit Umwandlung von Char zu Byte
Thema durchsuchen
Ansicht
Themen-Optionen

XE2: Probleme mit Umwandlung von Char zu Byte

Ein Thema von Helmi · begonnen am 22. Jan 2012 · letzter Beitrag vom 23. Jan 2012
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.344 Beiträge
 
Delphi XE2 Professional
 
#1

AW: Xe2: Probleme mit Umwandlung von Char zu Byte

  Alt 22. Jan 2012, 19:51
Die Idee das mit einer 2. Schleife zu machen, klingt ganz gut.
Einen normalen String zu schicken ist kein Problem - wird vom Modul sauber erkannt und angezeigt.
Nur eben diese Sonderzeichen machen Probleme.

Die Bezeichner bleiben so wie sie sind und haben auch ihren Sinn. Ich weiss das Text auch bei Delphi verwendet wird.
Aber das hindert nicht daran dass man diese auch selbst verwenden kann/darf. Wenn es Sinn macht dann nutz ich diese.
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.054 Beiträge
 
Delphi 12 Athens
 
#2

AW: Xe2: Probleme mit Umwandlung von Char zu Byte

  Alt 22. Jan 2012, 20:04
Als ich deine Bytewerte eben noch einmal angeschaut habe, ist mir aufgefallen, dass es noch sehr viel einfacher geht...
Delphi-Quellcode:
procedure TMainForm.LCD_Text_senden(Text: String; Zeilenumbruch: Boolean = false;
  leeren: Boolean = false; Schritt: Boolean = false; Verzoegerung: Word = 100);
var
  AnsiText: AnsiString;
begin
  {...}

  SetLength(AnsiText, Length(Text));
  if not CharToOem(PChar(Text), PAnsiChar(AnsiText)) then
    AnsiText := AnsiString(Text);

  {...}
// EDIT:
Ich weiss das Text auch bei Delphi verwendet wird.
Aber das hindert nicht daran dass man diese auch selbst verwenden kann/darf. Wenn es Sinn macht dann nutz ich diese.
Da hast du Recht: Man kann und darf. Man sollte nur nicht.
Aber das ist ja deine Sache. Wenn du das erste Mal damit auf die Nase gefallen bist, siehst du es vielleicht anders.
Sebastian Jänicke
AppCentral

Geändert von jaenicke (22. Jan 2012 um 20:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.344 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Xe2: Probleme mit Umwandlung von Char zu Byte

  Alt 22. Jan 2012, 20:18
Delphi-Quellcode:
SetLength(AnsiText, Length(Text));
  if not CharToOem(PChar(Text), PAnsiChar(AnsiText)) then
    AnsiText := AnsiString(Text);
Das wär zu schön um wahr zu sein - sehr schön kurz und so - nur leider passt es nicht ganz!
Z. B. wird "³" (hochgestellte 3) nicht richtig dargestellt)


Da hast du Recht: Man kann und darf. Man sollte nur nicht.
Aber das ist ja deine Sache. Wenn du das erste Mal damit auf die Nase gefallen bist, siehst du es vielleicht anders.
Also wo man mit solche Bezeichner auf die Schnauze fallen könnte (und ich auch schon bin) war in Verbindung mit "with".
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: Xe2: Probleme mit Umwandlung von Char zu Byte

  Alt 22. Jan 2012, 20:47
OK bei text mag es noch gehen. Bei Caption wird es aber schon kritisch, da auch ein Formular diese Eigenschaft hat. Und wenn du jetzt eine lokale Variable Caption nennst, weiß ich nicht,ob Delphi weiß, was gemeint ist. Und auch wenn es Delphi wissen sollte, würde es eher verwirren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.054 Beiträge
 
Delphi 12 Athens
 
#5

AW: Xe2: Probleme mit Umwandlung von Char zu Byte

  Alt 22. Jan 2012, 20:48
Das wär zu schön um wahr zu sein - sehr schön kurz und so - nur leider passt es nicht ganz!
Z. B. wird "³" (hochgestellte 3) nicht richtig dargestellt)
Hmm, das ist auch das einzige Zeichen. Alles andere passt in die Codepage 850. Die hochgestellte 3 steht aber in keiner Codepage an der Stelle. Wenn alles andere korrekt dargestellt wird, könntest du dafür eine Ausnahme machen. Oder du bleibst bei der Arraylösung.
Aber wie sieht es mit den diversen anderen Sonderzeichen aus? Vielleicht würden diese mit CharToOem ansonsten alle schon funktionieren.

Also wo man mit solche Bezeichner auf die Schnauze fallen könnte (und ich auch schon bin) war in Verbindung mit "with".
Benenne den Parameter Text einfach mal um. Normalerweise würdest du dann Kompilierfehler an den Verwendungsstellen bekommen. Da Text aber eine Eigenschaft des Formulars ist, funktioniert es einfach nur nicht mehr...

Anderes Problem: Refactoring
Delphi-Quellcode:
procedure TForm185.Test(Text: string);
begin
  ShowMessage(Text);
end;
Extrahiere einfach mal die Zeile in der Methode. Was kommt heraus? Richtig, das falsche...
Delphi-Quellcode:
procedure TForm185.Test(Text: string);
begin
  ExtractedMethod;
end;

procedure TForm185.ExtractedMethod;
begin
  ShowMessage(Text);
end;
Der extrahierte Code kompiliert aber leider aufgrund der Benennung...
Und nun bemerke den Fehler bei einem etwas komplexeren Code sofort...

// EDIT:
OK bei text mag es noch gehen. Bei Caption wird es aber schon kritisch, da auch ein Formular diese Eigenschaft hat.
Ein Formular hat auch die Eigenschaft Text.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.344 Beiträge
 
Delphi XE2 Professional
 
#6

AW: Xe2: Probleme mit Umwandlung von Char zu Byte

  Alt 22. Jan 2012, 20:56
Hmm, das ist auch das einzige Zeichen. Alles andere passt in die Codepage 850. Die hochgestellte 3 steht aber in keiner Codepage an der Stelle. Wenn alles andere korrekt dargestellt wird, könntest du dafür eine Ausnahme machen. Oder du bleibst bei der Arraylösung.
Aber wie sieht es mit den diversen anderen Sonderzeichen aus? Vielleicht würden diese mit CharToOem ansonsten alle schon funktionieren.
Also alle anderen Zeichen schauen gut aus - bis eben das eine.
Ich hab aber jetzt kein Problem damit das mit der Arraylösung zu machen

Wo schaust du bezüglich der Codepage nach?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.054 Beiträge
 
Delphi 12 Athens
 
#7

AW: Xe2: Probleme mit Umwandlung von Char zu Byte

  Alt 22. Jan 2012, 20:59
Wo schaust du bezüglich der Codepage nach?
Bei Wikipedia:
http://de.wikipedia.org/wiki/Codepage_850
Das ist "unsere". Die anderen sind rechts auf der Seite verlinkt.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.344 Beiträge
 
Delphi XE2 Professional
 
#8

AW: XE2: Probleme mit Umwandlung von Char zu Byte

  Alt 22. Jan 2012, 21:04
Danke!
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.232 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Xe2: Probleme mit Umwandlung von Char zu Byte

  Alt 22. Jan 2012, 22:24
Wo schaust du bezüglich der Codepage nach?
Bei Wikipedia:
http://de.wikipedia.org/wiki/Codepage_850
Das ist "unsere". Die anderen sind rechts auf der Seite verlinkt.
Ich glaube nicht das XE2 noch DOS-Programme erstellen kann bzw. LED-Lösungen auf DOS-Pages arbeitet.
Schaut nicht ISO 8859-1 besser aus?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: XE2: Probleme mit Umwandlung von Char zu Byte

  Alt 22. Jan 2012, 23:27
Hab nicht alles nichst gelesen, aber ...

Das Modul ist und bleibt weiterhin ANSI, also mußt du auch bei ANSI bleiben ... zumindestens bei den Schnittstellen.

ANSI-Funktionen ... siehe Unit AnsiStrings


Es muß auch nicht sein, daß die Zeichen dieses Modul überhaupt mit einer bekannten CodePage im PC übereinstimmen.
Oftmals wurde quasi eine "eigenständige" Kodierung verwendet.

Welches Modul eigentlich? (hab hier auf die Schnelle nirgends was dazu gefungen)
Es sollte dazu ja ein Datenblatt geben, wo bestimmt/vermutlich eine Zeichentabelle aufgeführt ist.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (22. Jan 2012 um 23:32 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz