AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit #0 im String

Ein Thema von R2009 · begonnen am 28. Apr 2009 · letzter Beitrag vom 5. Mai 2009
Antwort Antwort
Seite 2 von 3     12 3      
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#11

Re: Problem mit #0 im String

  Alt 29. Apr 2009, 08:14
Das ist mal wieder ein typischer Anwendungsfall von 'Trenne Funktion und Darstellung'.

Die Funktion (hier: HEX->binär) funktioniert, mur für die Darstellung muss man eine andere Form wählen (z.B. wie Satty67 es vorgeschlagen hat).

Falsch im Sinne des o.g. Paradigmas ist es, ein Darstellungselement (Edit2) als Funktionselement zu verwenden (Zwischenspeicher).
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#12

Re: Problem mit #0 im String

  Alt 5. Mai 2009, 07:32
Hi alzaimar,

Zitat:
Falsch im Sinne des o.g. Paradigmas ist es, ein Darstellungselement (Edit2) als Funktionselement zu verwenden (Zwischenspeicher).
Im Prinzip stimme ich dir zu!
Ich finde es halt schade, dass an dieser Stelle plötzlich die Philosophie (interne Darstellung von Variablen) einfach gewechselt wird.
Ich bin davon ausgegangen, dass in Object pascal, alle Strings auch als "Delphi Strings" behandelt werden.
Wer kommt denn auf die Idee, dass da plötzlich mit "0" terminierten Strings operiert wird.
Das hat nichts mit Darstellungs oder Funktionselementen zu tun sondern mit der Konsequenz mit der eine Programmiersprache
realisiert wird.

Viele Grüsse
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

Re: Problem mit #0 im String

  Alt 5. Mai 2009, 07:37
Zitat von R2009:
Ich finde es halt schade, dass an dieser Stelle plötzlich die Philosophie (interne Darstellung von Variablen) einfach gewechselt wird.
Ich bin davon ausgegangen, dass in Object pascal, alle Strings auch als "Delphi Strings" behandelt werden.
Wer kommt denn auf die Idee, dass da plötzlich mit "0" terminierten Strings operiert wird.
Delphi hat bei Strings schon eine durchgehende Philosophie. Da jedoch alle Controls (TEdit, ...) nur Wrapper um die entsprechenden Win32-API-Controls sind wird auf dieser Ebene zwangsweise #0 als Trenner angesehen da die Win32-API eine C-Kompatible schnittstelle darstellt. Und dort heißt nunmal #0 = String-Ende
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#14

Re: Problem mit #0 im String

  Alt 5. Mai 2009, 07:42
Zitat von R2009:
Wer kommt denn auf die Idee, dass da plötzlich mit "0" terminierten Strings operiert wird.
Das ist die Forderung des ComControl von Windows, da kann Delphi nichts dafür. Windows arbeitet schon immer mit NUL-terminierten Strings, ich glaube nicht, dass das irgendwann einmal unter Windows ging.

Delphi übergibt an das Windows-Element evtl. sogar ein '1234'#0'6789'#0#0. Nur schneiden Windows Funktion den String vor seiner Sichtbarkeit ab. Ich bin sogar relativ sicher, dass Du in keiner Programmiersprache ein #0 in einem Windows-Edit sichtbar machen kannst.
  Mit Zitat antworten Zitat
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#15

Re: Problem mit #0 im String

  Alt 5. Mai 2009, 08:07
Hi,

Bernhard Geyer schrieb:
Zitat:
nur Wrapper um die entsprechenden Win32-API-Controls
OK, das muss man wissen.
Was mich stört ist weniger, dass man die "0" nicht sieht, (damit hab ich gerechnet)
Mich stört, dass wenn ich edit1.text einen String zuweise der eine "0" enthält entweder die Setter Methode oder die Getter Methode den Rest abschneidet.
Täusch ich mich oder ist das Object Pascal?
Oder existiert edit1.text als String überhaupt nicht?
Das heisst wird das direkt dem Windows Steuerelement zugewiesen und von da auch wieder geholt?

Naja eine einfache Lösung hab ich jetzt ich stelle die Dinge halt in Hex dar.

Vielen Dank!
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: Problem mit #0 im String

  Alt 5. Mai 2009, 08:10
Ist aus der Vererbungshierarchie ersichtlich -> TWinControl
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#17

Re: Problem mit #0 im String

  Alt 5. Mai 2009, 08:32
Zitat von R2009:
Bernhard Geyer schrieb:
Zitat:
nur Wrapper um die entsprechenden Win32-API-Controls
OK, das muss man wissen.
Das war ja die Absicht der VCL. Die Kapslung der Win32 möglichst gut durch zuführen.
Aber auch wenn es ein Wrapper um KDE oder MacOS-Controls wäre, würde zu 99,9% das gleiche passieren.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#18

Re: Problem mit #0 im String

  Alt 5. Mai 2009, 09:30
Eigentlich ist das Thema hier, die aus C bekannten Null terminierten Strings.
Das #0 Zeichen gibt das Ende des Strings an.
Bei Pascalstrings steht die Länge des Strings vor dem ersten Zeichen im Speicher.
Da Windows in C geschrieben ist, kommt das #0 zum Tragen bei der Anzeige.

Delphi hat C kompatible Strings. Diese haben wie Pascal die Länge vor dem ersten Zeichen gespeichert und Terminieren noch zusätzlich den String mit #0.
Daher kann die Windows API so Klasse angesprochen werden.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.930 Beiträge
 
Delphi 12 Athens
 
#19

Re: Problem mit #0 im String

  Alt 5. Mai 2009, 09:33
Gibt es eine fertige C-Escape Funktion? Also eine Funktion die automatisch alles was in C-Escaped werden muss in einem PChar mit vernünftigen Escape Zeichen umwandelt?

'c:\dummesBeispiel\' -> 'c:\\dummesBeispiel\\'
'Meintext'#9'deintext' -> 'Meintext\tdeintext'
#0 -> '\0'
&c.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von thkerkmann
thkerkmann

Registriert seit: 7. Jan 2006
Ort: Pulheim Brauweiler
464 Beiträge
 
Delphi 2010 Professional
 
#20

Re: Problem mit #0 im String

  Alt 5. Mai 2009, 10:10
Das würde dir auch nicht helfen, da das nur die Darstellung für den Compiler ist, und nicht die interne binäre Speicherung.
Thomas Kerkmann
Ich hab noch einen Koffer in Borland.
http://thomaskerkmann.wordpress.com/
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 13:15 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