AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Probleme mit WideChar

Ein Thema von Canton · begonnen am 5. Dez 2003 · letzter Beitrag vom 16. Dez 2003
Antwort Antwort
Seite 2 von 2     12
jbg

Registriert seit: 12. Jun 2002
3.479 Beiträge
 
Delphi 10.1 Berlin Professional
 
#11

Re: Probleme mit WideChar

  Alt 15. Dez 2003, 19:04
Zitat von patty:
Aber sollte das String-Array nicht gerade in ein PWideChar-Array umgewandelt werden?
Warum Umwandeln? Ein WideString ist nichts anderes als ein PWideChar unter Windows, nur dass der Delphi Compiler hier ein wenig Arbeit abnimmt. Schau dir noch einmal die WStrToPWChar Funktion an. Dort wird der WideString einfach in einen Zeiger umgewandelt und zurückgeliefert (wenn er nicht leer ist).
  Mit Zitat antworten Zitat
patty

Registriert seit: 15. Dez 2003
Ort: Fulda
4 Beiträge
 
#12

Re: Probleme mit WideChar

  Alt 16. Dez 2003, 07:23
Zitat von jbg:
Warum Umwandeln? Ein WideString ist nichts anderes als ein PWideChar unter Windows, nur dass der Delphi Compiler hier ein wenig Arbeit abnimmt. Schau dir noch einmal die WStrToPWChar Funktion an. Dort wird der WideString einfach in einen Zeiger umgewandelt und zurückgeliefert (wenn er nicht leer ist).
"Umwandlen" natuerlich nicht im Sinne von Konvertieren, sondern so, dass ich eben hinterher vom Datentyp her als PWideChar auf den Speicherbereich zugreife
Ein guter Programmierer ist derjenige, der sich noch in die Lage eines Anwenders versetzen kann!

Stabilität ist wichtiger als Entwicklungsdauer.
  Mit Zitat antworten Zitat
Canton

Registriert seit: 5. Dez 2003
6 Beiträge
 
Delphi 5 Professional
 
#13

Re: Probleme mit WideChar

  Alt 16. Dez 2003, 09:22
Zitat:
Ansonsten stimmen evtl. die Strings vorher schon nicht...?
die Strings vorher stimmen da das ganzen wunderbar funktioniert wenn ich es nicht dynamisch mache:

Delphi-Quellcode:
SItemID[0]:=@WideString(Test[0])[1];
SItemID[1]:=@WideString(Test[1])[1];
SItemID[2]:=@WideString(Test[2])[1];
SItemID[3]:=@WideString(Test[3])[1];
SItemID[4]:=@WideString(Test[4])[1];
und meine schleife macht ja eigentlich auch nichts anderes ausser das sie halt jeden einzeln durchgeht und dann ab dem index 2 das bedürfnis hat mir den wert vom index 2 in index 0 und 2 zu schreiben (also wie in meinem post vorher beschrieben). Und da liegt ja mein Problem wie kann ich verhinder das er mir den Wert vom Index i-2 verändert wenn er eigentlich grade den index i bearbeitet?

ach ja die strings die in test stehen kommen aus ner ini-file. ist es falsch die nachdem öffnen und dem rausholen aller benötigten informationen zu schließen?? vielleicht liegt es ja daran. aber leichen wollte ich eigentlich nicht hinterlassen *gg*
  Mit Zitat antworten Zitat
patty

Registriert seit: 15. Dez 2003
Ort: Fulda
4 Beiträge
 
#14

Re: Probleme mit WideChar

  Alt 16. Dez 2003, 18:05
Ich muss doch getraeumt haben! Der Fehler ist ja offensichtlich und wurde auch weiter oben glaub ich schon mal angesprochen. Du wandelst mit WideString(...) ein AnsiString in ein WideString um, beachtest aber nicht, dass diese Umwandlung nur temporaer geschieht. Du speicherst also einen Pointer auf einen Speicherbereich, der nach Ausfuehrung der Codezeile wieder freigegeben wird. Wahrscheinlich arbeitet der Optimizer in Schleifen etwas anders als bei deiner letzten Befehlsfolge, was die Nutzung von Speicher angeht - das erklaert die unterschiedlichen Ergebnisse. Dass es nicht sofort zu einer Schutzverletzung kommt, kommt wahrscheinlich daher, dass die Strings recht kurz sind und die Win-Speicherverwaltung nicht Byte-genau arbeitet. Die Loesung waere demnach eine der folgenden:

1. mache das Original-String-Array als array of WideString ODER:
2. erstelle ein zusaetzliches Array vom Typ WideString und mach darauf zuerst eine Zuweisung

und verzichte auf das WideString(...) in der Anweisung. Das sollte gehen!
Ein guter Programmierer ist derjenige, der sich noch in die Lage eines Anwenders versetzen kann!

Stabilität ist wichtiger als Entwicklungsdauer.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:57 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