![]() |
Problem mit const
Hallo,
In meiner function habe ich eine const nach der ich eine Text Datei durchsuche. Nun möchte ich aber das ich diese Const in den Optionen ( TIniFile ) festlegen kann. Und da habe ich auch ein Problem ...
Delphi-Quellcode:
So wie es jetzt geschrieben ist funktioniert es mit fester Angabe der Const. Das was ich rauskommentiert habe, sollte eigentlich der Weg sein mit der Angabe der Variablen in der ini File. Die Variablen werden in der onCreate Procedur geschrieben.
function ReadString(path: string): string;
const searchstring = '[MP3] + New Release:'; var z1: string; i, p1, p2: integer; // searchstring: string; begin // searchstring := sTag + ' + ' + sString; Aber ... Wenn ich nun die auskommentierte Version nutze komme ich zu einem anderen Ergebniss. Nun meine Frage: Wie bekomme ich die beiden Variablen in die const? Setze ich sie mit
Delphi-Quellcode:
einfach rein bekomm ich einen fehler Konstantenausdruck erwartet.
searchstring = sTag + ' + ' + sString;
Vielen Dank :) |
Re: Problem mit const
Hallo sharkx,
mit const definierst Du, wie der Name schon sagt, eine Konstante. In der OH steht hierzu: Zitat:
|
Re: Problem mit const
hmm, wenn ich Dich nun richtig verstanden habe, müsste ich
Delphi-Quellcode:
nutzen, oder?
const
searchstring = sTag + ' + ' + sString; Tut es aber nicht, nur mit
Delphi-Quellcode:
erfüllt es seinen Zweck. Jedoch _muss_ ich die Const irgendwie aus der Ini File auslesen können.
const
searchstring = '[MP3] + New Release:'; |
Re: Problem mit const
Nein, völlig falsch verstanden: Eine Konstante ist konstant. Diese kann man zur Laufzeit nicht ändern, also mußt Du eine Variable nehmen.
|
Re: Problem mit const
gut, ok .. verstanden. Da bleibt mir ja nichts anderes übrig, als die Function so umzuschreiben, das ich nicht mehr die Const verwende.
Ich paste ma die Function, eventuell könnt ihr mir bissel unter die Arme greifen :)
Delphi-Quellcode:
Wenn ich das Ganze nun ändere in ...
function ReadString(path: string): string;
const searchstring = '[MP3] + New Release:'; var z1: string; i, p1, p2: integer; begin list := TStringList.Create; newlist := TStringList.Create; list.LoadFromFile(path); // Release parsen for i := 0 to list.Count - 1 do begin p1 := Pos(searchstring, list[i]); if p1 = 0 then continue; z1 := list.Strings[i]; p1 := Pos(TFirst, z1); p2 := Pos(TLast, z1); datum := Copy(z1, p1 + 1,(p2 - p1) - 1); p1 := Pos(searchstring, z1); z1 := Copy(z1, p1 + length(searchstring) + 1,length(z1)); p2 := Pos(' ', z1); Release := Copy(z1, 1,p2 - 1); if not DupeInListView(datum + ' ' + Release, Form1.ListView2) then newlist.Add(datum + ' ' + Release) end; Result := newlist.CommaText; // List Freigeben list.Free; // NewList Freigeben newlist.Free; end;
Delphi-Quellcode:
bekomm ich ein anderes Ergebniss als wenn ich es mit Konstanten mache. Ich mag zwar nun nicht den Sinn verstehen warum dies so ist, aber seht ihr ne Möglichkeit es ohne konstanten zu machen?
function ReadString(path: string): string;
var z1: string; i, p1, p2: integer; searchstring: string; begin searchstring := sTag + ' + ' + sString; list := TStringList.Create; newlist := TStringList.Create; list.LoadFromFile(path); // Release parsen for i := 0 to list.Count - 1 do begin p1 := Pos(searchstring, list[i]); if p1 = 0 then continue; z1 := list.Strings[i]; p1 := Pos(TFirst, z1); p2 := Pos(TLast, z1); datum := Copy(z1, p1 + 1,(p2 - p1) - 1); p1 := Pos(searchstring, z1); z1 := Copy(z1, p1 + length(searchstring) + 1,length(z1)); p2 := Pos(' ', z1); Release := Copy(z1, 1,p2 - 1); if not DupeInListView(datum + ' ' + Release, Form1.ListView2) then newlist.Add(datum + ' ' + Release) end; Result := newlist.CommaText; // List Freigeben list.Free; // NewList Freigeben newlist.Free; end; Bin dankbar für jede Antwort, jede Erklärung und jede zeile Code :) |
Re: Problem mit const
sTag und sString enthält wohl nicht das gewünschte:
1) Nutze den Debugger 2) Verwende keine globalen Variablen und übergebe die Strings einfach als Parameter der Funktion ReadString. |
Re: Problem mit const
die beiden variablen sTag und sString haben den gleichen inhalt.
Siehe Ini File..
Code:
Den Debugger nutze ich so oft ich kann, jedoch finde ich hier nich den fehler :/
sTag=[MP3]
sString=New Release: |
Re: Problem mit const
Zitat:
Zitat:
Zitat:
PS: Den Satz zu Globalen Variablen/Parameterübergabe hast Du gelesen? |
Re: Problem mit const
Hallo sharkx
es wäre mal interessant zu sehen, wie die beiden Ergebnisse aussehen! |
Re: Problem mit const
Tom: Hast Recht, die Variable sTag und sString sind laut debugger = ''.
Wenn ich sie nun in der function deklariere, wie les ich die nun aus der Ini file aus bzw wie übergebe ich sie weiter? so funktioniert es nicht :/
Delphi-Quellcode:
ReadString.sTag:= Ini.ReadString('Section', 'sTag', '[MP3]');
ReadString(sTag):= Ini.ReadString('Section', 'sTag', '[MP3]'); r_kerber: Ergebniss mit Konstanten war in der ListView folgendes:
Delphi-Quellcode:
Ohne konstanten ..
Time Release
11:01:03 Bravo Hits
Delphi-Quellcode:
Time Release
^Mp3 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:25 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