Autor Beitrag
lemming
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 470

Mac OS 10.3.1
Delphi 6 Pro, Kylix 3
BeitragVerfasst: Do 31.07.03 12:37 
In einer Funktion versuche ich diese Anweisung auszuführen. Result ist ein WideString. habe es aber schon mit String probiert. Das gleiche Problem.

ausblenden Delphi-Quelltext
1:
Result := Add(Result, s1);					


Result wird nicht überschrieben, sondern das Ergebnis (auch WideString) aus Add() wird dahinter angefügt.


Mach ich ein Workaround gehts so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
    sTemp := '';
    sTemp := Add(Result, s1);
    Result := '';
    Result := sTemp;


mache ich vielleicht was falsch?
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Do 31.07.03 13:57 
Hallo,

wie ist denn ADD aufgebaut? Kannst du diese funktion mal Posten?

Schon merkwürdig.

Gruß
Klabautermann
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Do 31.07.03 15:44 
WideStrings werden unter Linux und Windows unterschiedlich behandelt. Unter Linux haben sie, wie AnsiString einen Referenzzähler. Under Windows sind sie wie ShortStrings, haben also keinen Referenzzähler und werden immer kopiert (hat was mit OLE zu tun)

_________________
Ist Zeit wirklich Geld?
lemming Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 470

Mac OS 10.3.1
Delphi 6 Pro, Kylix 3
BeitragVerfasst: Do 31.07.03 16:12 
²AndyB, ja und bei normalen Strings ist das auch so? Wenn ich die WideStrings durch normale Strings ersetze, dann das gleiche. Er kettet den String hinten an.

²Klabautermann, die Funktion hab ich hier schonmal geaddet.
www.delphi-forum.de/viewtopic.php?t=14559

Was anderes.

ich habe hier diese Schleife

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
repeat
.
.
.
until (dividend < divisor);


dividend ist zu anfangs 17, divisor ist 5.
in jedem durchlauf wird von dividend der divisor subtrahiert. so das es so runter zählt.

12...7...2 und dann sollte schluß sein, weil ja 2 kleiner ist als 5, aber echt macht fröhlich weiter.

Eine Idee woran das jetzt liegt?

-lemmi
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Do 31.07.03 17:23 
lemming hat folgendes geschrieben:
12...7...2 und dann sollte schluß sein, weil ja 2 kleiner ist als 5, aber echt macht fröhlich weiter.

Du musst irgendwo in der Schleife wohl einen Fehler haben. Hast du den Code schon debuggt? (Ohne Code-Optimierung).

Dein anderes Problem kann ich nicht nachvollziehen. Die Funktion Add (sieht etwas langsam aus) hast du aber nicht verändert? Wie sieht der gesamte Aufruf aus, also mit zuweisung an Result und s1.

_________________
Ist Zeit wirklich Geld?
lemming Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 470

Mac OS 10.3.1
Delphi 6 Pro, Kylix 3
BeitragVerfasst: Fr 01.08.03 10:33 
Das 12 7 3 Problem hat sich mittlerweile gelöst. Der dividend war 05 statt 5. Somit hat es auch immer funktioniert wenn kein Rest übrig bleibt.

Ist ja fürchterlich wenn man nicht weiß ob's nun ein Bug ist oder ob man selber schuld ist. Sonst war man bisher immer selber schuld ;)

Das andere Problem mit dem Anhängen der Widestrings hab ich aber bis her immer noch nicht gelöst.

Danke für die Hilfe.

-lemmi