AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit Zeigern

Ein Thema von Gambit · begonnen am 2. Mär 2005 · letzter Beitrag vom 2. Mär 2005
Antwort Antwort
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#1

Problem mit Zeigern

  Alt 2. Mär 2005, 09:49
Hallo,

ich verwende hier eine API-Funktion(OemToCharBuff) die als Parameter PAnsiChar erwartet und ANSI-Text in OEM-Text umwandelt:

Auszug aus meiner Procedur:

Delphi-Quellcode:
If isUseOEM then
      begin
        Title:= PChar(QueryRef.FieldByName('aString').AsString);
        getMem(OEMTitle, length(Title));
        OemToCharBuff(Title, OEMTitle, Length(Title));
        FormSelectedTitles.ListBoxFoundTitles.Items.Add(OEMTitle);
        FreeMem(OEMTitle);
      end
wobei Title und OEMTitle vom Typ PAnsiChar sind.

Wenn ich die Procedure zum ersten Mal aufrufe funzt es einwandfrei. Rufe ich sie ein zweites Mal auf, bekomme ich zwar auch meinen umgewandelten Text, dahinter stehen dann aber oft noch merkwürdige Sonderzeichen wie ein § oder ein A mit Dach oder ähnliches.
Was mache ich denn hier noch falsch?

Gruß

Gambit
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#2

Re: Problem mit Zeigern

  Alt 2. Mär 2005, 09:53
Ich würde es mal mit getMem(OEMTitle, length(Title)+1); versuchen. Begründung: Es sind nullterminierte Strings. Das bedeutet du brauchst immer noch ein Zeichen für den Nullterminator, damit der String korrekt beendet ist.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#3

Re: Problem mit Zeigern

  Alt 2. Mär 2005, 10:00
Jau, das wars! Danke! Wär ich so wohl nicht drauf gekommen, leuchtet aber völlig ein...

Gruß

Gambit
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Problem mit Zeigern

  Alt 2. Mär 2005, 10:00
Du brauchst dich nicht mit GetMem, FreeMem und Zeigern zu plagen.
Mit den Delphidatentyp AnsiString geht das viel einfacher:
Delphi-Quellcode:
var
   title, OEMtitle : AnsiString;
begin
   Title:= QueryRef.FieldByName('aString').AsString;
   // Speicher für Ziel reservieren
   SetLength(OEMtitle, Length(title);
   OemToCharBuff(PChar(Title), PChar(OEMTitle), Length(Title));

   FormSelectedTitles.ListBoxFoundTitles.Items.Add(OEMTitle);
end
Andreas
  Mit Zitat antworten Zitat
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#5

Re: Problem mit Zeigern

  Alt 2. Mär 2005, 10:05
Aha! Nochmals Danke! und wann bzw. wofür benutzt man denn new und dispose?
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6

Re: Problem mit Zeigern

  Alt 2. Mär 2005, 10:25
Für dynamische Datenstrukturen. Verkettete Listen, Ringe, binäre Bäume usw.
Gruß
Hansa
  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 07:40 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