AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Pointer :\

Ein Thema von Snoop007 · begonnen am 13. Aug 2004 · letzter Beitrag vom 14. Aug 2004
Antwort Antwort
Seite 1 von 3  1 23   
Snoop007

Registriert seit: 15. Jan 2003
331 Beiträge
 
Delphi 6 Personal
 
#1

Pointer :\

  Alt 13. Aug 2004, 11:18
hi,
eigentlich dürfte das thema kein problem sein aber wieso kann ich den pointer so nicht benutzen ??

ich weiss der code macht so keinen sinn aber ich wollte nicht den kompletten code posten, zumal der Fehler bei fi := fp^; auftritt
Fehlermeldung : Operator auf diesen Operatortyp nicht anwendbar

Code:
var
  fi : File;
  fp : ^File;
begin
  fp := @fi;
  fi := fp^;
  ..
end;
  Mit Zitat antworten Zitat
Dannyboy

Registriert seit: 4. Aug 2003
Ort: Delphi-Heaven
418 Beiträge
 
Delphi 7 Personal
 
#2

Re: Porinter :\

  Alt 13. Aug 2004, 11:37
Zitat:
ich weiss der code macht so keinen sinn
Dito.
Meines Wissens kann man keine Pointer auf <File> setzen. Möchtest
Du mit "fi := fp^;" an den Inhalt von der Datei rankommen oder
wie? Mir ist momentan noch nicht ganz klar, was Du machen
möchtest, aber für Dateiverarbeitung sollest Du evtl. Hier im Forum suchenFilestreams
verwenden.

Was genau möchtest Du denn tun? Wenn Du uns das verrätst,
können wir Dir hoffentlich weiterhelfen.

DANNBOY

Nachtrag: Nenn' Deine Überschrift besser "Pointer". Ist aussagekräftiger als "Porinter".
  Mit Zitat antworten Zitat
Snoop007

Registriert seit: 15. Jan 2003
331 Beiträge
 
Delphi 6 Personal
 
#3

Re: Pointer :\

  Alt 13. Aug 2004, 12:06
Prointer .. lol gar net gesehen

ich schreibe eine kompone die daten in eine datei typweise speichert
daher benutze ich in der gasamten komponente die selbe variable vom typ file
daich beim übergeben nicht immer die gesamte variable übergeben möchte wollte ich einen
pointer stattdessen übergeben .. aber wenn das nicht geht :\ schade
  Mit Zitat antworten Zitat
Dannyboy

Registriert seit: 4. Aug 2003
Ort: Delphi-Heaven
418 Beiträge
 
Delphi 7 Personal
 
#4

Re: Pointer :\

  Alt 13. Aug 2004, 12:19
Zitat:
Prointer .. lol gar net gesehen
Schlimmer noch, es waren sogar "Porinter"
Wie wäre es denn, wenn Du einen Zeiger auf die Variable
(nicht auf die Datei) an einen FileStream übergibst?
Bei der write-Funktion von TFilestream kannst Du ebenso exakt
die Anzahl der zu schreibenden Bytes (die Quelle wäre dann der
Pointer Deiner Variable) angeben. Ich beschäftige mich z.Zt. auch
mit dem Erstellen einer Datei, in die verschiedene Variablen mit
unterschiedlichen Längen und unterschiedlichen Datentypen
rein kommen. Klappt mit Filestreams ganz easy.
  Mit Zitat antworten Zitat
Snoop007

Registriert seit: 15. Jan 2003
331 Beiträge
 
Delphi 6 Personal
 
#5

Re: Pointer :\

  Alt 13. Aug 2004, 12:20
*g
mh ich hab nu soweit alles mit assign ..reset .. rewrite usw. gemacht
gibts denn einen direkten vorteil gegenüber filestream ?
  Mit Zitat antworten Zitat
Dannyboy

Registriert seit: 4. Aug 2003
Ort: Delphi-Heaven
418 Beiträge
 
Delphi 7 Personal
 
#6

Re: Pointer :\

  Alt 13. Aug 2004, 12:43
Dieses ganze AssignFile-reset-rewrite-closeFile-Zeugs stammt
noch aus der Pascal-Zeit. Ich hab's damals auch so gelernt
und hatte kein Bock umzusteigen, aber das mit den Filestreams
ist wirklich (!) ganz einfach und bietet viele Vorteile
der Einfachheit und vor allem in der Geschwindigkeit.
Wenn Du z.B. einen Dateisplitter für beliebige Dateien schreiben möchtest
(siehe Anhang) dann kennst Du die Struktur der Dateien meistens gar nicht.
FileStreams sehen Strukturen einfach als eine Menge von einzelnen
Bytes an. Möchtest Du z.B einen Record speichern, dann machst Du das so:
Delphi-Quellcode:
type TMeinRecord = record
  buchstabe : Char;
  alter : byte;
  groesse : real;
  Daten : array[0..7] of byte;
end;
//...
  var MeinRecord : TMeinRecord;
//...
procedure schreibeMeinRecordInDatei;
  var Filestream: TFileStream;
begin
// FileStream:= TFileStream.create(<Dateiname>, <Zugriff auf Datei>);
   FileStream:= TFileStream.create('C:\test.dat', fmCreate OR fmShareExclusive);
// FileStream.write(<dantenquelle>, <anzahl der bytes>)
  FilStream.write(MeinRecord, SizeOf(TMeinRecord);
// Dateizugriff freigeben
  FileStream.free;
end;
Vorteile von der Pascal-Variante sind mir nicht bekannt. Hab' das aus dem
Kopf geschrieben, ergo ungetestet.
Nachtrag: Musst natürlich noch eventuelle
Exceptions abfangen.
Angehängte Dateien
Dateityp: zip disksplit.zip (211,5 KB, 1x aufgerufen)
  Mit Zitat antworten Zitat
Hansa

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

Re: Pointer :\

  Alt 13. Aug 2004, 12:57
Zitat von Snoop007:
ich schreibe eine kompone die daten in eine datei typweise speichert daher benutze ich in der gasamten komponente die selbe variable vom typ file daich beim übergeben nicht immer die gesamte variable übergeben möchte wollte ich einen
pointer stattdessen übergeben .. aber wenn das nicht geht :\ schade
Schreiben mußt du echt noch üben. Was die Pointer angeht, so habe ich eine dumpfe Ahnung, was du meinst. 8) Das ^ vor einem Typ gibt einen Verweis auf die Stelle einer anderen Variable an. Steht es dahinter, so referenziert man den Inhalt des Pointers.

Nur, was hat das ganze mit Dateien zu tun ? Wahrscheinlich weißt du nicht, wieviel Platz irgendwas zur Laufzeit braucht. Und das soll in eine Datei. Wenn dem so ist, dann willst du das wohl in einer typisierten Datei speichern und das ist auch richtig. Wer weiß beim Programmieren schon, ob eine Rechnung jetzt 1 oder 1000 Positionen hat.

Was du wohl mit "Pointer" meinst, das sind dynamische Datenstrukturen (Listen, Bäume usw.). Da spielt sich aber alles im Hauptspeicher ab.

Soll es längere Zeit gespeichert bleiben, so gehört es in eine Datei / Datenbank. Das alles ist aber auch dynamisch. So, jetzt bin ich mit meinem Latein am Ende, was das ganze soll.
Gruß
Hansa
  Mit Zitat antworten Zitat
Snoop007

Registriert seit: 15. Jan 2003
331 Beiträge
 
Delphi 6 Personal
 
#8

Re: Pointer :\

  Alt 13. Aug 2004, 13:04
Zitat von Hansa:

Schreiben mußt du echt noch üben. ..
danke ^^

ich wollte einfach statt der variablen File einen pointer übergeben aber so langsam glaub ich, dass das etwas blöd war


@Dannyboy
könnte ich damit auch listen ( arrays ) speichern, sieht bei deinem bsp so aus, wenn dem das so wäre
würde ich sofort darauf umsteigen; gleich mal testen
  Mit Zitat antworten Zitat
Snoop007

Registriert seit: 15. Jan 2003
331 Beiträge
 
Delphi 6 Personal
 
#9

Re: Pointer :\

  Alt 13. Aug 2004, 13:11
mh, damit kann man leider keine dynamischen listen speichern,
schade .. naja hätte ich mir auch denken können .. egal

dennoch danke euch
  Mit Zitat antworten Zitat
Dannyboy

Registriert seit: 4. Aug 2003
Ort: Delphi-Heaven
418 Beiträge
 
Delphi 7 Personal
 
#10

Re: Pointer :\

  Alt 13. Aug 2004, 13:23
Zitat:
könnte ich damit auch listen ( arrays ) speichern, sieht bei deinem bsp so aus, wenn dem das so wäre
würde ich sofort darauf umsteigen; gleich mal testen
Natürlich geht das:
Delphi-Quellcode:
type TArray = array[0..1000, 3..99999] of integer;
Var meinArray : TArray;
//...
Filestream.write(meinArray, SizeOf(meinArray));
//...
Zitat:
mh, damit kann man leider keine dynamischen listen speichern,
schade .. naja hätte ich mir auch denken können .. egal
Hier geblieben, wir sind noch nicht fertig.
Du muss nur an den Eintrag der Liste rankommen und dann wie gehabt:
Delphi-Quellcode:
VAR Eintrag : TListEintrag;
//...
FileStream.write(Eintag, SizeOf(Eintrag));
//...
Check this out.
DANNYBOY
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 14:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf