Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Word to PChar (https://www.delphipraxis.net/107246-word-pchar.html)

DeddyH 24. Jan 2008 19:10

Re: Word to PChar
 
Wo wird denn TempSystemTime befüllt? Hab ich was übersehen?

lbccaleb 24. Jan 2008 19:12

Re: Word to PChar
 
die hab ich dort als variablen, denn die werden beim ausführen der procedure neu eingelesen (augenblickliche zeit) und dann von dem zeitpunkt an, soll er mir halt 7 tage in der cbbox anzeigen..

SirThornberry 24. Jan 2008 19:13

Re: Word to PChar
 
@deddy: ich glaub du hast was übersehen. wenn ich mich richtig entsinne erwartet GetLocalTime einen var-parameter.

Die Muhkuh 24. Jan 2008 19:14

Re: Word to PChar
 
Dito,

Zeile 6:

Delphi-Quellcode:
GetLocalTime(TempSystemTime);

lbccaleb 24. Jan 2008 19:15

Re: Word to PChar
 
Liste der Anhänge anzeigen (Anzahl: 1)
hab mal nen screenshot von der cbbox gemacht:

[edit=SirThornberry]Bild in Anhang gepackt - Mfg, SirThornberry[/edit]

DeddyH 24. Jan 2008 19:18

Re: Word to PChar
 
OK, eine Zeile nicht gesehen. Geht es nur darum, den Wochentag von einem Datum + x Tage zu ermitteln? Dann schau Dir nochmal meinen (editierten) Beitrag im anderen Thread an.

SirThornberry 24. Jan 2008 19:19

Re: Word to PChar
 
der fehler liegt wie erwartet hier:
Delphi-Quellcode:
ItemInfo[i].DateText := PChar(Format('%.2d:%.2d:%.3d', [TempSystemTime.wDay, TempSystemTime.wMonth, TempSystemTime.wYear]));
Grund: Das Ergebnis von Format ist außerhalb der Funktion nicht mehr verfügbar. Das ganze würde dem gleich kommen:
Delphi-Quellcode:
var
  abc: String;
begin
  [...]
  ItemInfo[i].DateText = PChar(abc);
Das Ergebnis liegt also auf dem Stack und nach verlassen der Funktion zeigt zwar der Zeiger noch auf diese Stelle aber sobald etwas neues auf den Stack gepackt wird, wird auch der Wert überschrieben der irgendwann mal dort stand.

Noch besseres Beispiel:
Delphi-Quellcode:
procedure GibZahlAlsString(Zahl: Integer): PChar;
var
  meinString: String;
begin
  meinString := IntToStr(Zahl);
  result = @Zahl[1];
end;

lbccaleb 24. Jan 2008 19:22

Re: Word to PChar
 
Zitat:

Zitat von SirThornberry
der fehler liegt wie erwartet hier:
Delphi-Quellcode:
ItemInfo[i].DateText := PChar(Format('%.2d:%.2d:%.3d', [TempSystemTime.wDay, TempSystemTime.wMonth, TempSystemTime.wYear]));
Grund: Das Ergebnis von Format ist außerhalb der Funktion nicht mehr verfügbar. Das ganze würde dem gleich kommen:
Delphi-Quellcode:
var
  abc: String;
begin
  [...]
  ItemInfo[i].DateText = PChar(abc);
Das Ergebnis liegt also auf dem Stack und nach verlassen der Funktion zeigt zwar der Zeiger noch auf diese Stelle aber sobald etwas neues auf den Stack gepackt wird, wird auch der Wert überschrieben der irgendwann mal dort stand.

ok und was kann ich zumindest dagegen schon mal tun??

SirThornberry 24. Jan 2008 19:28

Re: Word to PChar
 
Die Frage kann man am besten beantworten wenn du uns zeigst was ItemInfo ist.
Zur Zeit ist bei dir
Delphi-Quellcode:
ItemInfo[i].DateText
ein Pointer (PChar ist nichts anderes). Wenn du also direkt in DateText Daten halten willst solltest du einen anderen Typ wählen. Anderenfalls musst du Speicher reservieren wo du die Daten dann hinpackst und darauf kannst du dann DateText zeigen lassen.

Remko 24. Jan 2008 19:37

Re: Word to PChar
 
Maybe I don't understand the question right because of my bad German Language knowledge but it seems to me you want to display a systemtime as string? Why not use SystemTimeToDateTime and use format?


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:21 Uhr.
Seite 2 von 3     12 3      

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