AGB  ·  Datenschutz  ·  Impressum  







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

string in array of char kopieren

Ein Thema von DelphiManiac · begonnen am 9. Jul 2009 · letzter Beitrag vom 10. Jul 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: string in array of char kopieren

  Alt 9. Jul 2009, 19:08
Äh.. hat jemand Muetze1's Beitrag gelesen?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

Re: string in array of char kopieren

  Alt 9. Jul 2009, 19:33
ja und bei mir isses oftmals standardmäßig bis zum Release an
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#13

Re: string in array of char kopieren

  Alt 9. Jul 2009, 19:53
Zitat von alzaimar:
Äh.. hat jemand Muetze1's Beitrag gelesen? :mrgreen:
Natürlich haben wir Beitrag gelesen. Aber:

1. Geht es auch um einige Feinheiten in den anderen Implementationen

2. Muetze1' Code macht nicht was verlangt wird, zumindest bis Delphi 10 wird nicht der komplette String kopiert, sondern es wird beim 1. #0 abgebrochen, d.h von '123'#0'abc' kommt halt nur '123'#0 im array an. Das mag ja in den meisten Fällen erwünscht sein, ist aber zumindest nicht das, was gefordet wurde:
Zitat:
jetzt will ich die chars vom string in den array kopieren
.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#14

Re: string in array of char kopieren

  Alt 9. Jul 2009, 20:28
Zitat von gammatester:
2. Muetze1' Code macht nicht was verlangt wird, zumindest bis Delphi 10 wird nicht der komplette String kopiert, sondern es wird beim 1. #0 abgebrochen, d.h von '123'#0'abc' kommt halt nur '123'#0 im array an. Das mag ja in den meisten Fällen erwünscht sein, ist aber zumindest nicht das, was gefordet wurde:
Zitat:
jetzt will ich die chars vom string in den array kopieren
.
Bei seiner Forderung steht nix von 0 Bytes innerhalb des Strings. Von daher ist es fraglich dies gleich voraus zu setzen...
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#15

Re: string in array of char kopieren

  Alt 9. Jul 2009, 20:56
Zitat von Muetze1:
Bei seiner Forderung steht nix von 0 Bytes innerhalb des Strings. Von daher ist es fraglich dies gleich voraus zu setzen...
Das ist allerdings ein ziemlich komisches Argument, denn es würde auf alle Zeichen zutreffen. Was klipp und klar da steht ist "die Zeichen" also doch wohl alle.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#16

Re: string in array of char kopieren

  Alt 10. Jul 2009, 10:58
Zitat von gammatester:
Zitat von Muetze1:
Bei seiner Forderung steht nix von 0 Bytes innerhalb des Strings. Von daher ist es fraglich dies gleich voraus zu setzen...
Das ist allerdings ein ziemlich komisches Argument, denn es würde auf alle Zeichen zutreffen. Was klipp und klar da steht ist "die Zeichen" also doch wohl alle.
Wir können uns noch stundenlang hier die Argumente um die Ohren hauen. Anscheinend stehst du ja drauf. Na dann hier mal ein weiteres von mir: Im normalen Umgang meinen die meisten mit "Zeichen" im Zusammenhang mit Zeichenketten eine Menge von Bytes exklusiv von Steuerzeichen (Ordinalwert < 32). Somit liesse sich eine Forderung erkennen in seinem ersten Beitrag, den meine Lösung erfüllt.

Grundlegend kann auch davon ausgehen, dass ein String seiner Bestimmung Verwendung findet, sprich: nicht als binärer Datencontainer. Aber nun gut, bitte unterbreite mir weitere deiner Argumente...
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#17

Re: string in array of char kopieren

  Alt 10. Jul 2009, 11:19
Zitat von Muetze1:
Wir können uns noch stundenlang hier die Argumente um die Ohren hauen. Anscheinend stehst du ja drauf.
...
Im normalen Umgang meinen die meisten mit "Zeichen" im Zusammenhang mit Zeichenketten eine Menge von Bytes exklusiv von Steuerzeichen (Ordinalwert < 32).
Nein, daruf stehe ich überhaupt nicht. Letztendlich kommt es darauf an, was der TE eigentlich will und was sein String enthält. Wenn Du allerdings weiter diskutieren willst (zB ob auch bei #13 und #10 analog zu #0 das Kopieren beendet werden soll), mach doch einfach einen neuen Thread auf. Vielleicht findet sich wer, der darauf steht.

Festzuhalten bleibt allerdings, daß StrPLCopy eventuell nicht den ganzen String kopiert (und es ist nützlich, wenn man das weiß). Und wie ich schon in #13 geschrieben habe, mag dieses Verhalten ja erwünscht sein.

Schönes Wochenende
Gammatester
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

Re: string in array of char kopieren

  Alt 10. Jul 2009, 13:01
Ähm *hust*

ich hätte da noch eine etwas andere Definition von String zu bieten. Der String enthält alle Zeichen, die ich in ihn hineinpacke incl #0,#9,#13,#10 usw.. Und da ich mit Delphi/Pascal programmiere erwarte ich, daß alle Zeichen von S[1] bis S[length(S)] verarbeitet werden.

Wenn eine API-Funktion (#0) einem da einen Strich durch die Rechnung macht, ist das ärgerlich und man sollte darauf vorbereitet sein, daß soetwas passieren könnte.

Es ist also wichtig zu wissen, ob die Daten in einem String interpretiert werden (z.B. Bildschirmausgabe, Ausdruck ) oder ob es sich bei dem String um einen reinen Datenkontainer handelt.
Wobei die Interpretation der enthaltenen Zeichen, ja stark Systemabhängig ist. So wurde unter DOS jedes Zeichen (#0..#255) auf dem Bildschirm dargestellt, während es unmöglich war alle Zeichen auf einem Drucker auszugeben .

Gruß
K-H
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#19

Re: string in array of char kopieren

  Alt 10. Jul 2009, 14:23
Zitat von p80286:
Und da ich mit Delphi/Pascal programmiere erwarte ich, daß alle Zeichen von S[1] bis S[length(S)] verarbeitet werden.
Und dabei enttäuschen dich schon soviele SysUtils und andere VCL Routinen welche einen string als Parameter nutzen und intern auf PChar casten und damit diese schöne heile Welt deiner Erwartungen zerstören.

Zitat von p80286:
Wenn eine API-Funktion (#0) einem da einen Strich durch die Rechnung macht, ...
Welche API Funktion?

Zitat von p80286:
... oder ob es sich bei dem String um einen reinen Datenkontainer handelt.
Wofür der String nie gedacht ist - aber durch das interne Design missbraucht werden kann. Aber ein vielfacher Missbrauch wird dadurch natürlich auch wieder legal...

Zitat von p80286:
So wurde unter DOS jedes Zeichen (#0..#255) auf dem Bildschirm dargestellt, während es unmöglich war alle Zeichen auf einem Drucker auszugeben .
Ja nee, is klar. Schonmal probiert? Die BIOS String Routinen (INT 10h) haben diese Zeichen nicht interpretiert und ausgegeben. DOS Funktionen (INT 21h) hingegen haben die Steuerzeichen serwohl interpretiert. Ein CR oder LF wurde richtig umgesetzt. Wenn du schon mit solchen Behauptungen herkommst, hol mal dein Assembler und dein 80c286 wieder raus und probier es aus...
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

Re: string in array of char kopieren

  Alt 10. Jul 2009, 14:49
Zitat von Muetze1:
Und dabei enttäuschen dich schon soviele SysUtils und andere VCL Routinen welche einen string als Parameter nutzen und intern auf PChar casten und damit diese schöne heile Welt deiner Erwartungen zerstören.
.....
Ja nee, is klar. Schonmal probiert? Die BIOS String Routinen (INT 10h) haben diese Zeichen nicht interpretiert und ausgegeben. DOS Funktionen (INT 21h) hingegen haben die Steuerzeichen serwohl interpretiert. Ein CR oder LF wurde richtig umgesetzt. Wenn du schon mit solchen Behauptungen herkommst, hol mal dein Assembler und dein 80c286 wieder raus und probier es aus...
Vorschlag zur Güte:
in einem String sind Zeichen enthalten. Deren Natur ist es, daß sie interpretiert werden (sollten). Nicht umsonst gibt es den Begriff Steuerzeichen.
Und je nachdem welcher Font zur Darstellung/Interpretation benutzt wird werden unterschiedliche Zeichen auch gleich dargestellt, bzw. das gleiche Zeichen (Byte-Wert) wird unterschiedlich dargestellt. Aber man sollte sich bewußt sein, daß Routinen die mit Strings umgehen mal auf Zeichenebene und mal auf Byteebene arbeiten - z.B. beim Sortieren und/oder vergleichen. (Unicode und andere MultiByteZeichensätze lassen wir jetzt erst einmal außen vor)

was den Int10 und Int21 angeht, da muß ich zugeben, daß ich die beiden wann immer es ging umgangen hab' und gleich in den Videospeicher geschrieben hab.
(Aber das ist so alt, das es schon garnicht mehr wahr ist.)

Gruß
K-H
  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 15:07 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