AGB  ·  Datenschutz  ·  Impressum  







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

Pointerinhalt verändern

Ein Thema von Jasmine · begonnen am 30. Jun 2005 · letzter Beitrag vom 1. Jul 2005
Antwort Antwort
Seite 1 von 2  1 2      
Jasmine

Registriert seit: 30. Jun 2005
Ort: Rom / Italien
24 Beiträge
 
Delphi 7 Personal
 
#1

Pointerinhalt verändern

  Alt 30. Jun 2005, 19:01
Hallo zusammen,

bin neu hier und programmiere erst seit kurzem.

Ich habe ein Verständnisproblem mit Pointern und es wäre sehr nett, wenn ein
paar von euch lieben Spezialisten mir helfen könnte

Ich habe zwei Pointer deklariert:

var
buffer : PChar;
copybuffer : PChar;

Ihnen dann Speicher zugewiesen :

buffer:=Pchar(AllocMem(1024));
copybuffer:=Pchar(AllocMem(1024));

Dann aus einem File in einen gelesen :

FileRead(FH,buffer^,50);

Nun kopiert :

copybuffer^:=buffer^;

Nun möchte ich ähnlich wie bei arrays copybuffer[x]:=copybuffer[x] + vari[x]
vom ersten Wert bis zu einem bestimmten den Inhalt verändern, in diesem Fall die
Variable vari[x] dazu addieren.

Jedoch:

for i:=1 to 50 do copybuffer^[i]:=copybuffer^[i]+vari[i];

funktioniert nicht !

Über ein paar Tips würde ich mich sehr freuen.

Danke,

Jasmine



Jasmine
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Freak
Delphi-Freak

Registriert seit: 26. Sep 2004
Ort: Wien Nähe (Österreich)
321 Beiträge
 
Delphi 2006 Architect
 
#2

Re: Pointerinhalt verändern

  Alt 30. Jun 2005, 19:12
Hi!

Herzlich willkommen in der DP!


Könnte es vielleicht über
for i:=1 to 50 do copybuffer[i]:=copybuffer[i]+vari[i]; funktionieren (PChar ist ja nicht ein »Standard-Pointer«, sondern etwas anders, glaube ich... )
oder sonst vielleicht mit
for i:=1 to 50 do copybuffer[i]^:=copybuffer[i]^+vari[i]; Sind nur zwei spontane Ideen, ist aber eine gute Frage



LG, Delphi-Freak
Gerhard Pfister
*
»To him who loves us and has freed us from our sins by his blood [...] be glory and power for ever and ever! Amen.« (Revelation*1,*5?6)
  Mit Zitat antworten Zitat
30. Jun 2005, 19:19
Dieses Thema wurde von "alcaeus" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
Geht wohl mehr in die Richtung von Object Pascal
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#4

Re: Pointerinhalt verändern

  Alt 30. Jun 2005, 19:26
Delphi-Quellcode:
for i := 0 to 50-1 do
  pbyte(integer(copybuffer)+i)^ := pbyte(integer(copybuffer)+i)^+vari[i];
oder du machst:

Delphi-Quellcode:
type tbla: array[0..0] of byte;
     pbla: ^tbla;
     bla: pbla;
begin
  bla := copybuffer;
  for i := 0 to 50-1 do
    bla[i]^ := bla[i]^+var[i];
end;
  Mit Zitat antworten Zitat
Jasmine

Registriert seit: 30. Jun 2005
Ort: Rom / Italien
24 Beiträge
 
Delphi 7 Personal
 
#5

Re: Pointerinhalt verändern

  Alt 30. Jun 2005, 19:55
Das ging aber schnell, danke

@Delphi-Freak

klappt leider nicht

@brechi

Danke.

Aber woher nehme ich pbyte ? Locale Variabel als Byte deklariert ?

var
pbyte : byte;

Compiler gibt Fehlermeldung : Missing operator or semicolon aus !

Jasmine
Jasmine
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Freak
Delphi-Freak

Registriert seit: 26. Sep 2004
Ort: Wien Nähe (Österreich)
321 Beiträge
 
Delphi 2006 Architect
 
#6

Re: Pointerinhalt verändern

  Alt 30. Jun 2005, 20:05
pbyte dürfte eine Funktion sein, sowie z.B. die Funktion PChar(). Wahrscheinlich brauchst du dafür irgendwelche Units in den Uses - nur weiß ich auch nicht welche, ich lese diesen Fuktionsnamen (wenn es überhaupt einer ist) zum ersten Mal... Brechi kann dir da wahrscheinlich besser helfen

LG, ich
Gerhard Pfister
*
»To him who loves us and has freed us from our sins by his blood [...] be glory and power for ever and ever! Amen.« (Revelation*1,*5?6)
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#7

Re: Pointerinhalt verändern

  Alt 30. Jun 2005, 20:06
type pbyte = ^byte;

sollte delphi aber kennen, weils in der windows.pas steht
also einfach nix deklarieren

edit:

pchar ist nichts anderes als nen ^char;
also nen pointer auf nen char (array)

gibt auch pinteger etc. kommt halt drauf an was du amchen willst aber nen + funktioniert nur auf zahlbasis

d.h. du kannst nicht 2 chars addieren sondern nur 2 bytes
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Freak
Delphi-Freak

Registriert seit: 26. Sep 2004
Ort: Wien Nähe (Österreich)
321 Beiträge
 
Delphi 2006 Architect
 
#8

Re: Pointerinhalt verändern

  Alt 30. Jun 2005, 20:12
Bedeutet das, dass wenn man zwei Typen
Delphi-Quellcode:
type
  MyType: Array of Byte;
  PMyType: ^MyType;
hat, dass es dann automatisch die »Funktion« PMyType gibt, um einen Pointer zu erzeugen?


mfg


[Edit]Tschuldigung, dass das jetzt etwas OT wird [/Edit]
Gerhard Pfister
*
»To him who loves us and has freed us from our sins by his blood [...] be glory and power for ever and ever! Amen.« (Revelation*1,*5?6)
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#9

Re: Pointerinhalt verändern

  Alt 30. Jun 2005, 20:16
pmytype ist dann einfach nur nen pointer, mehr nicht.
aber wenn du den veränderst mit mytype^ ändert delphi das dann jenachdem ab worauf es zeigt

d.h. nen pbyte(addr)^ := 1; würde nur das byte an der addreses ändern
nen pinteger(addr)^ := 1; würde 4 bytes ändern
usw.

wenn du nen ^array hast dann musst du noch nen index angeben
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#10

Re: Pointerinhalt verändern

  Alt 30. Jun 2005, 20:34
Das war IMHO nicht Delphi-Freaks Frage.
PMyType ist keine neue Funktion, sondern einfach ein Typecast, den es ja automatisch für jeden Typ gibt.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:43 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