AGB  ·  Datenschutz  ·  Impressum  







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

FreeMem D2009 und FastMM

Ein Thema von EWeiss · begonnen am 1. Mai 2011 · letzter Beitrag vom 2. Mai 2011
Antwort Antwort
FredlFesl

Registriert seit: 19. Apr 2011
293 Beiträge
 
Delphi 2009 Enterprise
 
#1

AW: FreeMem D2009 und FastMM

  Alt 1. Mai 2011, 08:34
Du gibst sItem frei, obwohl es noch gebraucht wird.
Delphi-Quellcode:
function ListGetText(hList: HWND; Item: Integer): PWideChar;
...
begin
    ...
    Result := sItem;
    FreeMem(sItem, nLEN); // <<<--------- Das kann nicht gut gehen

end;
Gib einen WideString zurück.
Das Bild hängt schief.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: FreeMem D2009 und FastMM

  Alt 1. Mai 2011, 09:12
Am Einfachsten gleich direkt in den WideString reinschreiben.
Delphi-Quellcode:
function ListGetText(hList: HWND; Item: Integer): WideString;
begin
    if Item > 0 then
       dec(Item);
    SetLength(Result, SendMessage(hList, LB_GETTEXTLEN, Item, 0));
    SendMessage(hList, LB_GETTEXT, Item, LPARAM(Result));
end;
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: FreeMem D2009 und FastMM

  Alt 1. Mai 2011, 10:12
Am Einfachsten gleich direkt in den WideString reinschreiben.
Delphi-Quellcode:
function ListGetText(hList: HWND; Item: Integer): WideString;
begin
    if Item > 0 then
       dec(Item);
    SetLength(Result, SendMessage(hList, LB_GETTEXTLEN, Item, 0));
    SendMessage(hList, LB_GETTEXT, Item, LPARAM(Result));
end;
Kein Memory allozieren ?
Und Freigeben?

Denn AllocMem benötigt einen pointer.

PS:
Und damit wäre es auch nicht getan denn CopyFile erwartet ein PWideChar!
Delphi-Quellcode:
          Img := SKAERO_CreateImageFromFile(ListGetText(hList, ListItem));
          if Img <> 0 then
          begin
            hImg := cardinal(SKAERO_GetProperty(WinHandle, FORM_Center));
            SKAERO_DisposeImage(hImg);
            CopyFile(ListGetText(hList, ListItem), PWideChar(
              SKAERO_CENTERFORM), False);
            SKAERO_SetProperty(WinHandle, FORM_Center, Img);
            ResizeWindow(WinHandle, 1);
          end;

Das war auch der Grund das ich über PWideChar gegangen bin
um das unnötige hin und her konvertieren zu vermeiden.

Der Fehler ist auf jedenfall weg ..
Danke.

gruss

Geändert von EWeiss ( 1. Mai 2011 um 10:36 Uhr)
  Mit Zitat antworten Zitat
FredlFesl

Registriert seit: 19. Apr 2011
293 Beiträge
 
Delphi 2009 Enterprise
 
#4

AW: FreeMem D2009 und FastMM

  Alt 1. Mai 2011, 17:59
Delphi-Quellcode:
function ListGetText(hList: HWND; Item: Integer): WideString;
begin
    if Item > 0 then
       dec(Item);
    SetLength(Result, SendMessage(hList, LB_GETTEXTLEN, Item, 0));
    SendMessage(hList, LB_GETTEXT, Item, LPARAM(Result));
end;
Kein Memory allozieren ?
Und Freigeben?
SetLength allokiert den Speicher. Die Freigabe erfolgt über die Referenzzählung der Strings.
Das Bild hängt schief.
  Mit Zitat antworten Zitat
Antwort Antwort


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:16 Uhr.
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 by Thomas Breitkreuz